분류 전체보기13 Head First Design Patterns : State Pattern State Pattern 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있음 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있음. 구조 Context ConcreteState 중 하나에 대한 참조를 저장 하고 상태별 작업을 위임. State 인터페이스를 통해 커뮤니케이션 새로운 상태 객체를 전달 하기 위해 setter 노출 State 상태별 메서드 선언. 모든 상태에 적합해야함. 일부 상태에서 절대 호출 되지 않는 쓸모없는 메서드가 있는 것을 방지. ConcreteState State의 메서드 구현 유사코드 반복 방지를 위해 중간 추상 클래스를 제공 할 수 있음. Context 개체를 가지고 있어 Context의 상태 전환(setter이용) 하거나 필요한 정보를 가져올 수 있음. 장점.. 2024. 3. 13. Head First Design Patterns : Composite Pattern Composite Pattern 객체를 트리구조로 구성해서 부분-전체 계층구조를 구현 부분-전체 계층 : 부분들이 계층을 이루고 있지만 모든 부분을 묶어서 전체를 다룰 수 있는 구조 클라이언트에서 개별객체와 복합객체를 똑같은 방법 처리. 복합객체와 개별객체의 구분이 거의 필요 없음. 트리 형태의 객체 구조. 구조 component 복합 객체 내에 들어있는 모든 객체의 인터페이스를 정의 composite 자식이 있는 구성요소의 행동을 정의하고 자식 구성요소를 저장 요청을 전달받으면 컨테이너는 작업을 하위 요소들에 위임하고 중간 결과들을 처리한 다음 최종 결과들을 클라이언트에 반환 leaf 하위 요소가 없는 트리의 기본구조 대부분의 실제 작업들을 수행 장점 복잡한 트리구조들과 더 편리하게 작업 OCP. 객체.. 2024. 2. 25. Head First Design Patterns : Iterator pattern Iterator pattern 컬렉션의 구현 방법을 노출하지 않으면서 집합체(Aggregator)내의 모든 항목에 접근하는 방법을 제공 Aggregator/Container : Stack, Linked List, Tree 등.. 복잡하게 얽혀있는 자료 컬렉션들을 순횐하는 알고리즘 전략을 정의 하는 것. 구조 Iterator 집합체의 요소들을 순서대로 검색하기 위한 인터페이스 정의 ConcreateIterator Iterator 인터페이스를 구현함 Aggregate 여러 요소들로 이루어져 있는 집합체 ConcreateAggregate Aggreagate 인터페이스를 구현하는 클래스 장점 SRP OCP 단점 일부 컬렉션들의 요소들을 직접 탐색하는 것보다 덜 효율적 일 수 있음. 예 java.util.Iter.. 2024. 2. 25. Head First Design Patterns : Template Method Pattern Template Method Pattern 알고리즘의 골격을 정의 알고리즘의 구조를 변경하지 않고 자식클래스들이 알고리즘의 특정 단계를 오버라이드 할 수 있도록 하는 패턴 구조 AbstractClass TemplateMethod 존재. 알고리즘의 단계를 구성하는 메서드들이 선언 되어 있음. 특정 알고리즘을 구현하고 알고리즘은 메서드들의 구체적인 구현으로부터 분리. ConcreteClass Abstract에 선언되어 있는 메서드들을 각필요에 맞게 오버라이드. TemplateMethod는 오버라이드 불가 장점 클라이언트들이 대규모 알고리즘의 특정 부분만 오버라이드 하도록 하여 알고리즘의 다른 부분에 발생하는 변경에 영향을 덜 받게 할 수 있음 중복 코드를 줄일 수 있음. 단점 유지가 어려움 일부 클라이언트들.. 2024. 1. 29. 이전 1 2 3 4 다음