재귀적 합성을 사용한 설계 방법.
재귀적 합성을 통한 복합 객체의 구성 - Composite
메뉴가 선택된 사실을 다시 외부로 알려야 함.
“객체가 외부로 이벤트를 발생시킨다”라고 표현.
자바에서 이벤트를 처리하는 방법
인터페이스 기반 리스너 방식(일종의 전략 패턴이다)
문제점
모든 객체가 결국 인터페이스 메소드를 호출하므로,
어떤 객체에서 이벤트가 발생했는지 구분하는 코드를 작성해야 한다.
“OCP를 만족 할 수 없다."
onCommand()가 어떤 호출인지 확인하는 id같은 자료구조가 필요하다.
=> 요즘에는 핸들러 방식의 이벤트 처리 방식(하지만 자바에서는 구현 불가)
IMenuListener
관찰자 패턴 : Observer Pattern
의도 : 등록된 모든 객체에게 이벤트를 발생
최신 자바의 이벤트 처리 방법
MVC
관찰자패턴 + 어댑터 패턴
관찰의 대상(Subject, Model, Document)
모든 테이블의 공통의 특징(관찰자 패턴의 기본 로직)은 항상 동일하다.
달라지는 것은 메소드 재정의로 변경한다면,
공통적인 것은 부모 클래스로 만들어서 제공
Command패턴
명령을 객체로 캡슐화(명령 자체를 캡슐화)
- 메디에이터 패턴과 비슷하다.
간접층의 원리
: 소프트웨어 난제는 간접층을 도입함으로써 그 문제를 해결할 수 있다.
=> 객체로 캡슐화
// 공통된 로직은 부모클래스로 묶어 주는 것이좋다........
Factory Method Pattern
: Template Mothod Pattern의 모양인데
자식이 재정의하는 메소드가 하는 일이 정책의 변경이 아닌
객체 생성이라면
'Software Design Pattern' 카테고리의 다른 글
Collection 을 설계하는 방법 (0) | 2017.11.30 |
---|---|
공통성과 가변성의 분리의 원칙을 사용하는 GoF의 디자인 패턴 5가지 (0) | 2017.11.29 |
메뉴, Composite 패턴 핵심 2가지 (0) | 2017.11.28 |
객체의 상태가 많을 때 초기화 방법 (0) | 2017.11.27 |
Item의 상태에 따른 동작을 정의한 인터페이스 (0) | 2017.11.26 |