Design pattern

    [Design Pattern] Abstract Factory Pattern

    추상 팩토리 패턴이란? 서로 관련이 있는 객체들을 통째로 묶어서 팩토리 클래스로 만들고, 이들 팩토리를 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴 관련성있는 여러 종류의 객체를 일관성 있는 방식으로 생성할 때 유용 AbstractFactory: 실제 팩토리 클래스의 공통 인터페이스. 각 제품의 부품을 생성하는 기능을 추상 메서드로 정의 ConcreteFactory: 구체적인 팩토리 클래스로 AbstractFactory 클래스의 추상 메서드를 오버라이드 함으로써 구체적인 제품 생성 AbstractProduct: 제품의 공통 인터페이스 ConcreteProduct: 구체적인 팩토리 클래스에서 생성되는 구체적인 제품 추상 팩토리 패턴 구현 교재 예시 : 엘리베이터 부품 업체 변경 엘..

    [Desigan Pattern] Factory Method Pattern

    Factory Method Pattern 이란? 객체 생성 처리를 서브 클래스로 분리 해 처리하도록 캡슐화하는 패턴 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성의 변화에 대비하는데 유용 Product: 팩토리 메서드로 생성될 객체의 공통 인터페이스 ConcreteProduct: 구체적으로 객체가 생성되는 클래스 Creator: 팩토리 메서드를 갖는 클래스 ConcreteCreator: 팩토리 메서드를 구현하는 클래스로 ConcreteProduct 객체를 생성 Factory Method Pattern 구현 교재 예시 : 여러가지 방식의 엘레베이터 스케줄링 방법 지원 엘리베이터 스케줄링: 주어진 요청(목적지 층과 방향)을 받았을 대 여러 대의 엘리베이터 중 하나를 선택하는 것 작업 처리..

    [Design Pattern] Template Method Pattern

    Template Method Pattern 이란? 전체적인 알고리즘은 상위 클래스에서 구현하면 서 다른 부분은 하위 클래스에서 구현할 수 있도록 하는 디자인 패턴 전체적으로는 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화할 때 유용 AbstractClass : 템플릿 메서드를 정의하는 클래스. 하위 클래스에 공통 알고리즘을 정의하고 하위 클래스에서 구현될 기능을 primitive 메서드 또는 hook 메서드로 정의하는 클래스 ConcreteClass : 물려받은 primitive 메서드나 hook 메서드를 구현하는 클래스. 상위 클래스에 구현된 템플릿 메서드의 일반적인 알고리즘에서 하위 클래스에 적합하게 primitive 메서드나 hook 메서드를 오버라이드 하는 클래스) *..

    [Design Pattern] Decorator Pattern

    Decorator Pattern 이란? 기존의 기능에 새로운 기능을 추가하고 싶을 경우, 새로운 기능을 Decorator로 만들어서 추가하는 방식 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우, 각 추가 기능을 Decorator 클래스로 정의한 후 필요한 Decorator 객체를 조합함으로써 추가 기능의 조합을 설계 Component: 기본 기능을 뜻하는 ConcreteComponent와 추가 기능을 뜻하는 Decorator의 공통 기능을 정의. Client는 Component를 통해 실제 객체 사용 ConcreteComponent: 기본 기능을 구현하는 클래스 Decorator: 많은 수가 존재하는 구체적인 Decorator 의 공통 기능 제공 ConcreteDecoratorA, Concrete..

    [Design Pattern] Observer Pattern

    1. 옵저버 패턴이란? 데이터의 변경이 발생했을 경우,그와 연관된 객체들에게 알림을 보내는 디자인 패턴 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용 통보 대상 객체 관리를 Subject 클래스와 Observer 인터페이스로 일반화 통보 대상 클래스나 대상 객체의 변경에도 ConcreteSubject 클래스를 수정 없이 그대로 사용할 수 있도록 함 Observer: 데이터의 변경을 통보 받는 인터페이스. Subject에서는 Observer 인터페이스의 update 메서드를 호출함으로써 ConcreteSubject의 데이터 변경을 ConcreteObserver에게 통보 Subject: ConcreteObserver 객체를 관리하는 요소. Observer 인터페이스를 참조해서 ..

    [Design Pattern] Command Pattern

    Command Pattern 이란? 실행될 기능을 캡슐화 → 호출자(invoker) 클래스와 수신자(Receiver) 클래스 사이의 의존성을 제거하는 패턴 1) 이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우 유용 2) 이벤트를 발생시키는 클래스를 변경하지 않고 재사용하고자 할 때 유용 호출자(invoker) 클래스: 기능의 실행을 요구 수신자(Receiver) 클래스: 실제 기능을 실행 Command Pattern 구현 예시 public interface Command { public abstract void execute(); } public class Button { // invoker private Command theCommand; public Button(Command th..

    [Design Pattern] State Pattern

    1. 스테이트 패턴 정의 상태에 따라 동일한 작업이 다른 방식으로 실행될 때 해당 상태가 작업을 수행하도록 위임하는 디자인 패턴 상태 : 객체가 시스템에 존재하는(객체의 라이프 타임) 동안 객체가 가질 수 있는 어떤 조건이나 상황 상태진입 : 객체의 한 상태에서 다른 상태로 이동하는 것 2. 스테이트 패턴 구현 객체의 특정 상태를 클래스로 선언 클래스에서는 해당 상태에서 할 수 있는 행위들을 메소드로 정의 각 상태 클래스를 인터페이스로 캡슐화 → 클라이언트에서 인터페이스를 호출하는 방식 1) 인터페이스 메소드 : 각 상태에서 수행해야 하는 행위 2) Context 요소 : 상태 클래스를 이용해 일을 수행 시키도록 지시 (현재 상태를 나타내는 state 변수 존재) 3) State1, State2, Sta..