[디자인패턴] 데코레이터 패턴(Decorator Pattern)이란 무엇인가?
2023. 3. 8. 15:46
Programming/Design Pattern
정의 데코레이터(Decorator)는 사전적으로 무언가를 꾸며준다는 의미를 가지고 있다. 이에 착안해 데코레이터 패턴의 사전적 정의를 살펴보면 다음과 같다. 객체에 추가 요소를 동적으로 더할 수 있도록 하는 패턴으로, 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있다. 데코레이터 패턴은 Java I/O 에서 대표적으로 적용되고 있는 디자인 패턴이다. 사전적 정의가 실제 구현에서 어떻게 사용되는 것인지 와 닿기 힘들다. 이에 관련된 문제 상황과 해결 방법을 아래 문단에서 자세하게 알아보자. 문제 상황 우리는 샐러드 가게에서 사용할 전산 시스템을 만드는 상황을 가정해 보자. 만약 아래와 같이 샐러드 주문 표가 있다고 할 때, 각 샐러드 조합에 대한 클래스를 만드려면 어떻게 해야 할까? 만약 조합..
[디자인패턴] 옵저버 패턴(Observer Pattern)이란 무엇인가?
2023. 3. 8. 11:58
Programming/Design Pattern
정의 정말 많이 쓰이는 디자인 패턴 중 하나인 옵저버 패턴은 아래와 같은 정의를 가지고 있다. 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로, 일대다(one-to-many) 의존성을 정의한다. 아래의 그림과 같이, 한 Subject가 자신의 상태가 바뀌었음을 다수의 Observer 들에게 통지(Notify)하는 방식을 가지고 있는 패턴이다. 옵저버 패턴은 RxJava, Swing 라이브러리 등 많은 곳에서 활용하고 있는 디자인 패턴이다. 문제 상황 한 신문사가 있고, 이 신문사에서 출간되는 신문을 구독하는 다수의 구독자가 있는 상황을 고려해 보자. 구독자들은 신문이 배달될 때마다 바로 신문을 읽고 싶은 상황이다. 이를 위의 그림과 같이 정리하면 ..