Bridge Pattern

구현에서 추상을 분리하여 이들이 독립적으로 다양성을 가질 수 있도록 한다. Motivation 기존 방식에서는 Window 클래스가 특정 플랫폼(Linux, Mac, Windows)에 대한 구현을 직접 포함했다면, 새로운 플랫폼이 추가될 때마다 Window 클래스를 수정해야 한다. 브릿지 패턴을 이용해 Window와 WindowImp를 분리하면 독립적으로 확장할 수 있게 된다. Applicability 추상적 개념과 이에 대한 구현 사이 지속적인 종속 관계를 피하고 싶을 때 추상적 개념과 구현 모두가 독립적으로 서브클래싱을 통해 확장되어야 할 때 추상적 개념에 대한 구현 내용을 변경하는 것이 다른 관련 프로그램에 아무런 영향을 주지 않아야 할 때 사용자에게 구현을 완벽하게 은닉하길 원할 때 클래스 계통에서 클래스 수가 급증하는 것을 방지하고자 할 때 여러 객체들에 걸쳐 구현을 공유하고자 하며(참조 카운트 등), 또 이런 사실을 사용하는 쪽에 공개하고 싶지 않을 때 Structure Abstraction: 추상적 개념에 대한 인터페이스를 제공하고 객체 구현자에 대한 참조자를 관리한다....

January 28, 2025 · 5 min · Beomsu Lee

Composite Pattern

부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리 구조로 구성한다. 사용자로 하여금 개별 객체와 복합 객체를 모두 동일하게 다룰 수 있도록 하는 패턴이다. Motivation 파일 시스템에는 파일과 디렉터리가 존재하며, 디렉터리는 파일뿐만 아니라 다른 디렉터리도 포함할 수 있다. 이러한 관계를 구현할 때, 파일과 디렉터리를 다르게 다루면 코드가 복잡해지고, 이를 관리하는 데 불편함이 발생한다. 컴포지트 패턴을 사용하면 파일과 디렉터리를 동일하게 처리할 수 있다. 디렉터리는 파일과 다른 디렉터리를 자식 객체로 가지며, 이를 재귀적으로 처리할 수 있다....

January 28, 2025 · 6 min · Beomsu Lee