CS/디자인 패턴(2)
-
[디자인 패턴] 2. 옵저버 패턴
옵저버 패턴이란? 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다. 주제(Subject Object)에서 중요한 데이터를 관리한다. 주제 데이터가 바뀌면 옵저버에게 그 소식이 전해진다. 옵저버 객체들은 주제를 구독하고 있으며(주제 객체에 등록되어 있으며) 주제 데이터가 바뀌면 갱신 내용을 전달받는다. 옵저버가 아닌 객체는 주제 데이터가 바뀌어도 아무 연락을 받을 수 없다. 구현 구현은 보통 주제 인터페이스와 옵저버 인터페이스가 들어있는 클래스 디자인으로 구현한다. 구조 Subject 주제를 나타내는 인터페이스 주제가 상태를 저장하고 제어한다. 데이터의 주인은 주제이다. 객체에서 옵저버로 등록하거나 옵저버 목록에서 탈퇴하고 ..
2022.08.23 -
[디자인 패턴] 1. 전략 패턴
상속의 문제점 Duck 클래스 ----------- - quack() - swim() - fly() 오리들이 공통적으로 울음소리, 수영, 날기를 할 수 있다고 생각해 Duck 상위 클래스를 만들고 하위 클래스에서 Duck 클래스를 상속받아 구현한다고 가정하자. 그렇지만 나무오리라면 날 수도 소리낼 수도 없다. 나무오리라면 아래와 같이 오버라이드 해야 한다. DecoyDuck ----------- quack() { // 아무것도 하지 않도록 오버라이드 } display() { // 가짜오리 } fly() { // 아무것도 하지 않도록 오버라이드 } 이렇게 상속하는 상황에는 문제점이 존재한다. 상속은 아래와 같은 단점을 가진다. 서브클래스에서 코드가 중복 실행 시 특징을 바꾸기 힘들다. 모든 오리의 행동을 ..
2022.08.22