Free Lines Arrow
본문 바로가기
728x90

Design pattern/GoF(HeadFirst)3

[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.
728x90
반응형