728x90 반응형 CS Study/디자인패턴84 22.02.20_자바와스프링에서찾아보는패턴 01.자바 01.1 StrategyInJava import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class StrategyInJava{ public static void main(String[] args){ List numbers = new ArrayList(); numbers.add(10); numbers.add(5); Collections.sort(numbers, new Comparator(){ @Override public int compare(Integer o1, Integet o2){ return o1 - o2; } }); //Collec.. 2022. 2. 21. 22.02.20_전략패턴의장점과단점 여러 알고리즘을 캡슐화 하고 상호 교환 가능하게 만드는 패턴 01.장점 새로운 전략을 추가하더라도 기존 코드를 변경하지 않음 상속대신 위임을 사용할 수 있음 상속은 하나 밖에 상속이 안되고, 상속를 강요하면 진짜 상속이 필요할 때 못쓰고 상위클래스가 변경되면 하위클래스가 영향을 받으니 좀더 구현을 이용해서 유연해짐 런타임에 전략을 변경할 수 있음 02.단점 복잡도가 증가함 클래스가 많이 늘어나고 복잡도 늘어난다고 할 수 있는데 한번만들어지고 재사용되지 않는다면 클래스는 많이 늘어나지 않을 것임 클라이언트가 구체적인 전략을 알아야함 https://github.com/3DPIT/study/blob/master/05.%EC%BD%94%EB%94%A9%EC%9C%BC%EB%A1%9C%ED%95%99%EC%8A%.. 2022. 2. 21. 22.02.20_전략패턴-패턴적용하기 01.패턴적용 - 생성자에 넣기 01.1 BlueLightRedLight public class BlueLightRedLight{ private Speed speed; public BlueLightRedLight(Speed speed){ this.speed = speed; } public void blueLight(){ speed.blueLight(); } public void redLight(){ speed.redLight(); } } context로 남아있어야함 01.2 Speed public interface Speed{ public void blueLight(); public void redLight(); } 전략 01.3 Normal publci class Normal implements Spe.. 2022. 2. 21. 22.02.20_전략패턴-패턴소개 은연중에 많이쓰는 것 프레임워크에서 많이 표현해서 씀 어떤 일을 수행하는 방법이 여러개일때, 그 여러 알고리즘 각 개별적인 클래스로 캡슐화하고 그 캡슐화한것을 공통된 인터페이스로 추상화해서 로직을 수행하는 곳에서는 추상화된 인터페이스만 사용함으로써 코드는 바뀌지 않지만 사용하는 알고리즘을 바꿔서 끼어넣을 수 있게 하는 것 자바 개발자에게 제일 많이 보이는것 compareater 인터페이스 있는데 이게 대표적인 전략 패턴, 우리가 그 인터페이스의 구현체를 제공해 주는것이 concreate 전략을 만들어주는과정으로 볼 수 있음 01.소스코드 Client public class Client{ public static void main(String[] args){ BlueLightRedLight blueLigh.. 2022. 2. 20. 이전 1 ··· 8 9 10 11 12 13 14 ··· 21 다음 728x90 반응형