Free Lines Arrow
본문 바로가기
728x90

Design pattern15

[HeadFirst] 커맨드 패턴 커맨드 패턴 커맨드 패턴을 쓰게 되면 작업을 요청한 곳과 작업을 처리하는 곳을 분리 할 수 있다. 커맨드 패턴에는 명령(command), 수신자(receiver), 발동자(invoker), 클라이언트(client)가 있다. 커맨드 객체는 일련의 행동을 특정 리시버와 연결함으로써 요청을 캡슐화한 것이다. 밖에서 볼 때는 어떤 객쳬가 리시버 역할을 하는지, 그 리시버가 어떤 일을 하는지 알 수 없습니다 - 그냥 execute0 메소드를 호출하면 해당 요청이 처리된다는 사실만 알 수 있습니다. 커맨드 패턴 수행과정 클라이언트가 커맨드 객체를 생성한다. - 커맨드객체에는 행동과 리시버의 정보를 가지고 있다. 클라이언트는 인보커 객체의 setCommand 메소드를 호출한다 - 이때 커맨드 객체를 같이 넘겨 준다... 2023. 2. 10.
[HeadFirst] 데코레이터 패턴 정의 데코레이터 패턴으로 객체에 추가 요소를 동적으로 더한다. 데코레이터를 사용하면 서브클래스를 만들 때 보다 훨씬 유연하게 기능을 확장할 수 있다. 너무 많은 종류가 있을때 상속을 쓰게 되면 관리해야 될 객체가 많아진다. - 예를 들어 음료의 종류가 100개가 넘는다면 100개의 객체를 관리를 해야 될 것 이다. 그렇기 때문에 데코레이터 패턴을 사용하면 된다. 아래는 다크로스트 -> 모카추가 -> 휘핑크림을 추가한 데코레이터 패턴의 모습이다. 구조 기본구조 ConcreateComponent component 의 구체화 메소드를 추가해 새로운 행동을 추가 할수 있다. ConcreateComponent 각 데코레이터 안에는 Component 객체가 들어 있다. 데코레이터에는 구성요소의 레퍼런스를 포함한 인.. 2023. 1. 7.
[HeadFirst] 옵저버 패턴 정의 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체엑 연락이 간다. 자동으로 내용이 갱신되는 방식이다. 1 : N 구조를 가진다. 아래 처럼 주체 에서 B 로 값이 변경되는 경우 관련된 객체에게 알려줘야 한다. 구조 Subject 주제를 나타내는 인터페이스 즉 여기서 값이 변경되면 등록된 옵저버들에게 알려준다. 옵저버 등록 삭제를 여기서 한다. ConcreateSubject 주제 역할을 하는 구체 클래스이다. 옵저버를 등록하기 위한 등록, 해제 메소드, notifyObservers()메소드로 구현한다. Observer 옵저버가 될수 있는 객체는 반드시 해당 인터페이를 구현해야 한다. update 메소드 밖에 없다. ConcreateObserver Observer 인터페이스의 구체화 이다. 무엇이.. 2022. 12. 3.
[Design Pattern] Composite Pattern Composite pattern 컴포짓 패턴 이란? composite 패턴은 Composite(디렉토리)과 Leaf(파일)을 동일시해서 재귀적인 구조를 만들기 위한 설계 패턴이다. 어떻게 Composite(디렉토리)과 Leaf(파일)를 동일하게 여길까? component 객체를 상속받아 Composite 와 Leaf 를 상속받도록 한다. 그렇게 되면 다형성으로 Composite, Leaf 를 동일한 객체로 바라볼수 있다. 컴포짓 패턴 구조 Component : 최상의 객체 - 다형성을 위해 최상의 객체를 하나 둔다. Composite: 복합객체 - 폴더를 담당한다. - 그렇기 때문에 List 가 존재하고 add, remove, getChild 메서드가 존재한다. Leaf: 단일 객체 - 파일 객체를 담당.. 2022. 8. 15.
728x90
반응형