프로그래밍/디자인패턴

    Decorator(데코레이터) 패턴이란?

    Decorator(데코레이터) 패턴이란?

    🚀 데코레이터 패턴이란? 객체에 추가 요소를 동적으로 더할 수 있는 패턴 데코레이터를 사용하면 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있음 위 그림에서는 구성 요소의 형식으로 Component를 추상 클래스로 만들었는데, 데코레이터 패턴에서는 특정한 추상 구성 요소를 지정하지 않기 때문에 인터페이스를 사용해도 된다. 따라서 기존의 코드 구조가 추상 클래스면 추상 클래스로 진행하고, 아니라면 인터페이스로 만들면 된다. 여기서는 추상 클래스로 생각하고 진행하겠다. ✏️ Component 기본 기능을 뜻하는 추상 클래스 or 인터페이스 데코레이터들은 이 클래스를 상속하고 있기에 서로를 감쌀 수 있음 ✏️ ConcreteComponent 기본 기능(Component)을 구현(정의)하는 클래스 ..

    Observer(옵저버) 패턴이란?

    Observer(옵저버) 패턴이란?

    🚀 옵저버 패턴이란? 주제(subject)가 변경될 때마다 옵저버(observer)들에게 변화를 알려주는 디자인 패턴 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의함 주제와 객체를 따로 두는 경우도 있음. 즉, 주제가 객체를 관찰하다가 변화가 생기면 옵저버들에게 알려주는 것 주제는 옵저버들이 인터페이스를 구현한다는 것을 제외하면 옵저버에 대해 아무것도 모른다. 따라서 이들 사이의 결합은 느슨한 결합(Loose Coupling)이다. 옵저버는 언제든지 새로 추가 및 제거 가능 새로운 형식의 옵저버를 추가할 때도 주제는 변경할 필요 X 주제와 옵저버는 서로 독립적으로 재사용 O 주제나 옵저버가 달라져도 서..

    Strategy Pattern(전략 패턴)이란?

    Strategy Pattern(전략 패턴)이란?

    🚀 전략 패턴이란? 정책 패턴(Policy Pattern)이라고도 불림 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 사용할 수 있게 해줌 객체의 행위를 변경하고 싶은 경우 직접 수정하지 않고 전략이라 불리는 캡슐화한 알고리즘을 변경해줌으로써 유연하게 확장하는 방법 🚀 강아지로 예시 코드 작성해보기 먼저 강아지를 만들어야한다고 생각합니다. 강아지는 다양하고, 각각 행동(소리와 움직임)이 다릅니다. 이 때 어떻게 코드를 작성할 수 있을까요? 1. 상속을 이용 같은 행동을 하는 강아지들이라면 상관없지만 다른 행동을 하는 강아지들이 있을 수 있습니다. 코드 재사용성을 위해 상속을 이용하는 것도 좋지만, 불필요한 유지보수가 크게 늘어날 수 있습니다. 즉, 모든 서브클래스에서 같은 행동을 하는 것이..

    Delegate Pattern(델리게이트 패턴, 위임 패턴)이란?

    * 23.03.29 코드수정 Delegate 패턴이 '헤드퍼스트 디자인 패턴' 도서에 나와있지 않아서 정리해보고자 한다. 아무래도 Decorator 패턴 또는 strategy 패턴과 비슷하기 때문일까? 또한, 이 Delegate 패턴이 Decorator 패턴이랑 혼동된 블로그 글도 나와있기에 힘들었다. 그리고 Strategy 패턴과 유사한 부분이 있어서 이 점도 많이 헷갈렸다. 🤔 Delegate 패턴이란? delegate는 '위임하다' 라는 사전적 의미를 가지고 있음 즉, 객체가 자신의 기능을 다른 객체에게 위임하여 기능을 실행하는 디자인 패턴 객체 간의 결합도를 낮춰서 유지보수성과 확장성을 높이는데 사용됨 예를 들면 다음과 같다 A는 B의 기능을 사용하고 싶을 때, A가 B의 기능을 직접 구현하지 않..