개발/디자인패턴(8)
-
[Design Pattern] 옵저버 패턴(Observer Pattern)
Head First Design Patterns를 읽고 학습한 내용을 기록합니다. 정의 옵저버 패턴에서는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다. 특정 객체에 변경이 발생했을때 그 객체에 의존하는 모든 객체에게 변경 사실을 알려 줄 수 있는 디자인 패턴이다. 책에선 신문 발행-구독을 예로 설명하고 있다. 여기서 정보를 구독하는 구독자를 옵저버(Observer)라고 부른다. 옵저버 패턴에서 발행자와 구독자는 느슨한 결합으로 연결되어 있는데 이 뜻은 두 객체가 상호작용을 하긴 하지만 서로가 내부적으로 어떤일을 하는지는 관심이 없다는 걸 의미한다. 발행자는 데이터를 제공만 할 뿐이지 구독자들이 ..
2021.02.01 -
[Design Pattern] 전략패턴(Strategy Pattern)
Head First Design Patterns를 학습한 내용을 기록합니다. 게임에 존재하는 몇가지 종류의 오리를 만들어 보려고한다. 이를 클래스로 설계하면 아래와 같이 할 수 있을것이다. Duck이라는 클래스를 선언하고 quack()과 swim() 메소드를 구현한다. display()는 선언만하고 구현하진 않는다. 각 서브클래스 오리들(MallardDuck , ReadheadDuck)은 수퍼클래스 Duck을 상속받아서 오리의 특색에 맞게 display를 구현한다. 현재 구조를 보면 모든 오리가 똑같이 수영하고 꽥꽥 소리를 낸다. 위 클래스 설계에서 오리가 날 수 있도록 기능을 추가하려면 어떻게 하면될까?? 아래의 방식으로 설계하면 각 오리별로 메소드를 추가할 필요 없이 손쉽게 모든 오리들이 날 수 있도..
2021.01.29