목적종속적인 객체의 집합을 생성하는 인터페이스를 제공구체적인 클래스 명시 없이도 객체의 집합을 생성가능하다.의의유현성과 확장성 증대구체적인 팩토리 클래스를 캡슐화일련의 관련 객체 생성가능인터페이스를 통해 객체를 생성하고 조작가능시스템의 독립성과 확장성이 증대된다.버튼과 체크박스를 통한 팩토리 메서드public interface Button { void render(); }버튼이라는 인터페이스render 하는 기능을 구현을 강제하기 위하여 생성// Concrete Product A1 class RoundButton implements Button { public void render() { System.out.println("Rendering Round Button"); } } // Concrete Pro..
정의객체를 생성하는 인터페이스를 제공함.어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브 클래스에서 이루어지게 한다.객체의 생성로직을 클라이언트 코드에 노출시키지 않음.예제// Abstract Product interface Logger { void log(String message); }Logger 인터페이스 생성 // Concrete Product 1 class FileLogger implements Logger { public void log(String message) { System.out.println("Logging to a file: " + message); } } // Concrete Product 2 class ConsoleLogger implements Logger { public..
회사의 웹 사이트가 사용자에게 많은 이미지를 보여줌.그로 인하여 페이지의 로딩 시간이 길어져서 UX 가 저하됨.프록시 패턴으로 이미지 로딩을 최적화 가능구현공통 인터페이스public interface Image { void display(); }실제 이미지 클래스public class RealImage implements Image { private String fileName; public RealImage(String fileName) { this.fileName = fileName; this.loadFromDisk(); } private void loadFromDisk() { System.out.println("Loalding " + fileName); } @Override public void d..
전략 패턴 ( Strategy Pattern )정의알고리즘 군을 정의하고 각각을 캡슐화하여, 교환해서 사용할 수 있게 만듬.알고리즘을 사용하는 클라이언트과 독립적으로 알고리즘을 변경가능구성요소전략 객체실제 전략 메서드를 구현하는 객체컨텍스트전략 객체를 사용하는 부분전략 객체의 사용자나 소비자 역할을 함.클라이언트전략 객체를 생성하고 컨텍스트에 주입전략 객체 공급자.코드예시 시나리오군인, 무기, 보급 장교무기 (전략): 실제 행동 (즉, 전략)을 나타냅니다. 예를 들면 총, 검, 활 등이 있습니다.군인 (컨텍스트): 무기 (전략)를 사용하여 전투를 수행합니다.보급 장교 (클라이언트): 군인에게 어떤 무기 (전략)를 선택하여 주입할지를 결정합니다.public interface Strategy { public..
정의전략 패턴의 변형 패턴스프링 FW 에서 특히 자주 사용되는 디자인 패턴DI - 의존성 주입 : 에서 사용하는 특별한 형태의 전략 패턴특징전략 패턴과 구조적으로 유사함.전략을 익명 내부 클래스로 정의하여 사용별도의 전략 파일을 따로 정의할 필요가 없음동작방식템플릿 메서드에서 실행되어야 하는 특정한 알고리즘의 일부분을 콜백 메서드로 정의콜백 메서드의 구현을 템플릿 메서드에서 호출하는 클라이언트에서 제공콜백 메서드의 구현은 익명 내부 클래스 형태로 제공됨.장점별도 전략 클래스 파일 정의 필요 X코드의 양 줄어듬.관련 코드를 한 곳에서 보기 용이동적으로 전략의 구현을 변경 혹은 제공이 용이함.코드public interface Strategy { public abstract void runStrategy();..