어떤게 어떤 것을 해결하기 위한 목적이었는지 모른다면 헷갈리기 쉬움
뭐 ... 결론적으로 나오는 구조가 문제가 아님 ㅋ
구글 검색을 해보니 표로 작성해주신 분이 있는 듯해서 퍼옴.
|
구조 개선을 위한 디자인 패턴 [표]Adapter와 Bridge 패턴의 비교, 요약 | Adapter 패턴 | Bridge 패턴 | 공통점 | - 제 3의 객체를 간접 접근하도록 함으로써 설계의 유연성을 높여줌 - 제 3의 객체가 제공하는 인터페이스와는 다른 형태로 요청이 전달됨 | 차이점 | - 이미 존재하는 두 가지 형태의 인터페이스간 불일치성을 해소해주는 것이 주목적 - 인터페이스의 구현 방법이나 독립적인 변경 가능성에 대해서는 신경쓰지 않음. 다만 서로 독립적으로 설계된 두 개의 클래스가 변경없이 같이 사용될 수 있는 방법에 초점을 둠 | - 인터페이스와 그것의 구현 모듈을 연결시켜주는 역할 수행 - Clinet에게는 동일한 인터페이스를 제공하면서 내부 구현은 지속적으로 변경, 발전시켜나가기 위한 목적으로 사용 | 주적용 시점 | 사후처리: 기존의 소프트웨어에 새로운 요구사항이 주어져 애초에 연관성이 고려되지 않은 클래스들이 함께 동작하도록 할 때 주로 사용 | 사전처리: 애초 설계 시 동일 인터페이스에 대해 여러 구현 방법을 적용시키거나 인터페이스와 구현을 독립적으로 수정, 발전시키기 위해 주로 사용 |
[표] Composite와 Decorator 패턴의 비교, 요약 | Composite 패턴 | Decorator 패턴 | 공통점 | - 회귀적 구성 관계를 가지는 비슷한 클래스 구조 사용 | 차이점 | 여러 개의 관련된 객체들이 동일한 형태로 취급될 수 있도록 클래스들을 구조화시키는데 중점을 둠 | 여러 기능들을 동적으로 추가, 삭제할 수 있도록 만들어 주는데 중점을 둠 | 기타 | - 두 가지 패턴이 동시에 사용되어 상호 보완적인 역할을 수행할 수도 있음 - Composite 패턴 입장에서 해석하면 Decorator 및 그 하위 클래스가 Composite 클래스 객체를 구성하는 기본 객체들을 위한 클래스 역할을 수행하는 것임 - Decorator 패턴 입장에서 해석하면 Composite 클래스가 Decorator 및 그 하위 클래스 객체에 의해 최종적으로 꾸며질 객체의 클래스 역할을 수행하는 것임 |
[표] Decorator와 Proxy 패턴의 비교, 요약 | Decorator 패턴 | Proxy 패턴 | 공통점 | - 어떤 객체에 대한 간접 접근 방식을 제공하거나 구현 시 Client로부터 주어진 요청을 다른 객체로 전달하기 위한 데이터 멤버를 가지는 등 비슷한 구조임 - Client에게 자신이 참조하고 있는 객체와 동일한 인터페이스 제공 | 차이점 | - 어떤 객체에게 기능이나 특성을 추가, 제거하는 것이 주목적 - 회귀적인 구성 관계를 가짐 - 클래스 추가 정의를 통해 새로운 기능의 정의가 가능함 - Decorator 객체가 수행하는 기능은 동적으로 확장될 수 있음 | - 어떤 객체를 간접 접근하거나 간접 접근 시 부가 처리를 수행하기 위한 방법 제공 - 주요 기능은 Subject 클래스에 의해 정의됨. Proxy 클래스는 부가적인 기능만 수행함 - 컴파일 시에 정적으로 Subject 클래스가 결정됨 |
|
|
|
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]