본문 바로가기

👩🏻‍💻Technical things/Design pattern3

[Design pattern] Decorator pattern 본 게시글은 Head First Design Pattern을 읽고 정리한 내용 입니다. 해당 소스코드는, https://github.com/so1gging/Design-Pattern를 참고하세요:) 0. 정의 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 즉, 어떤 기능에 추가적으로 기능을 덧붙이고 싶은 경우, 그 기능들을 Decorator로 만들어서 덧붙이는 방식이다. 1. 문제상황 이 글을 보고 계시는 대부분의 분들이 카페에 한 번쯤 가보셨을 것이다. 카페에 가서 주문을 하는 상황을 한 번 상상해보자. "따뜻한 카페라떼 한 잔 주세요!", 옆에서 커피가 나오는 동안 기다리는데, 다른 손님이 들어와서 주문을 한다.. 2020. 6. 23.
[Design pattern] Observer Pattern 본 게시글은 Head First Design Pattern을 읽고 정리한 내용 입니다. 해당 소스코드는, https://github.com/so1gging/Design-Pattern를 참고하세요:) 0. 정의 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다. 즉, 어떤 객체에 이벤트가 발생했을 때, 이 객체와 관련된 객체들 (옵저버들)에게 통지하는 패턴. 객체의 상태가 바뀌면 특정 객체에 의존하지 않으면서 상태의 변경을 관련된 객체들에게 통지하는 것이 가능해진다. 이 패턴은 Pub/Sub(발행/구독) 모델으로 불리기도 한다. 신문 구독방법을 생각해보자. 독자가 특정 신문사에 구독 시청을 하면 매번 .. 2020. 6. 22.
[Design pattern] Strategy Pattern 본 게시글은 Head First Design Pattern을 읽고 정리한 내용 입니다. 해당 소스코드는, https://github.com/so1gging/Design-Pattern를 참고하세요:) 0. 정의 객체들이 할 수 있는 행위를 각각에 대해 클래스로 생성하고, 유사한 행위들을 캡슐화하는 인터페이스를 정의하여 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 클래스를 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 말한다. 1. 일반 객체지향 기법으로 구현했을 때의 문제 John은 오리 어플리케이션 게임을 운영하는 회사를 다니면서 오리게임을 만든다. 이 게임에서는 헤엄치고 꽥꽥 울음소리를 내는, 매우 다양한 오리들을 보여준다. John은 표준적인 객체지향 기법을 사용하여 Du.. 2020. 6. 22.
728x90
반응형