수강완료한 강의 복습해보자 (코딩으로 학습하는 GoF의 디자인 패턴) 전략 패턴 (Strategy Pattern) 여러 알고리즘을 캡슐화하고 상호 교환 가능하게 만드는 패턴. 사용할 알고리즘을 클라이언트가 선택한다. 적용 전 코드 (Before) BlueLightRedLight.java public class BlueLightRedLight { private int speed; public BlueLightRedLight(int speed) { this.speed = speed; } public void blueLight() { if (speed == 1) { System.out.println("무 궁 화 꽃 이"); } else if (speed == 2) { System.out.println("무궁화..
수강완료한 강의 복습해보자 (코딩으로 학습하는 GoF의 디자인 패턴) 템플릿 콜백 (Template-Callback) 콜백으로 상속 대신 위임을 사용하는 템플릿 패턴. 상속 대신 익명 내부 클래스 또는 람다 표현식을 활용할 수 있다. 적용 전 코드 (Before) FileProcessor.java public class FileProcessor { private String path; public FileProcessor(String path) { this.path = path; } public int process() { try(BufferedReader reader = new BufferedReader(new FileReader(path))) { // 자동 close int result = 0; St..
수강완료한 강의 복습해보자 (코딩으로 학습하는 GoF의 디자인 패턴) 템플릿 메서드 (Factory method) 알고리즘 구조를 서브 클래스가 확장할 수 있도록 템플릿으로 제공하는 방법. 추상 클래스는 템플릿을 제공하고 하위 클래스는 구체적인 알고리즘을 제공한다. 적용 전 코드 (Before) FileProcessor.java public class FileProcessor { private String path; public FileProcessor(String path) { this.path = path; } public int process() { try(BufferedReader reader = new BufferedReader(new FileReader(path))) { // 자동 close ..
수강완료한 강의 복습해보자 (코딩으로 학습하는 GoF의 디자인 패턴) 추상 팩토리 (Abstract Factory) 서로 관련있는 여러 객체를 만들어주는 인터페이스 구체적으로 어떤 클래스의 인스턴스를(concrete product)를 사용하는지 감출 수 있다. 적용 전 코드 (Before) Anchor.java public interface Anchor { } WhiteAnchor.java public class WhiteAnchor implements Anchor { } Wheel.java public interface Wheel { } WhiteWheel.java public class WhiteWheel implements Wheel { } Ship.java @Getter @Setter @ToStr..
수강완료한 강의 복습해보자 (코딩으로 학습하는 GoF의 디자인 패턴) 팩토리 메서드 (Factory Method) 구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다. 다양한 구현체(Product)가 있고, 그중에서 특정한 구현체를 만들 수 있는 다양한 팩토리(Creator)를 제공할 수 있다 적용 전 코드 (Before) Ship.java @Getter @Setter @ToString public class Ship { private String name; private String color; private String logo; } Client.java public class Client { public static void main(String[] args) { Ship whiteship =..