본문 바로가기

디자인패턴

[Design pattern] Bridge 패턴: 가교(Bridge)의도: 구현에서 추상을 분리하여, 이들이 독립적으로 다양성을 가질 수 있도록 한다.다른 이름: 핸들/구현부(Handle/Body)동기: 하나의 추상적 개념이 여러가지 구현으로 구체화될 수 있을때, 대부분은 상속을통해서 이 문제를 해결한다. 추상 클래스로 추상적 개념에 대한 인터페이스를 정의하고, 구체적인 서브클래스들에서 서로 다른 방식으로 이들 인터페이스를 구현 한다.그러나, 이런 방법으로는 충분한 융통성을 가질 수 없다. 상속은 구현과 추상적개념을 영구적으로 종속시키기 때문에, 추상적 개념과 구현을 분리해서 재사용하거나수정, 확장하기가 쉽지 않다.활용성:1. 런타임에 구현 방법을 선택하거나 구현 내용을 변경하고 싶을 때.:2. 추상적 개념과 구현 모두가 독립적으로 서브클래싱을 .. 더보기
[Design pattern] PAC PACPresentation : 시각적인 동작을 위한 컴포넌트Abstraction : 데이터를 핸들링 하는 컴포넌트AgentControl : P, A를 연결하고 다른 Agent들과 통신하기 위한 컴포넌트 구현1.애플리케니션의 모델을 정의한다.2.PAC 계층을 조직화하기 위해 일반 전략을 정의한다.3.최상위 레벨 PAC 에이전트를 정의한다.4.최하위 레벨 PAC 에이전트들을 정의한다.5.시스템 서비스들을 제공하는 최하위 레벨 PAC 에이전트들을 정의한다.6.하위 레벨 PAC 에이전트들을 조합하고 위한 중간 레벨 PAC 에이전트들을 정의한다.7.하위 레벨 PAC 에이전트들을 상호조정하기 위해 중간 레벨 PAC 에이전트들을 정의 한다.8.사람-컴퓨터 상호작용으로부터 핵심 기능을 분리해낸다.9.외부 인터페이스를.. 더보기
[Design pattern] Proxy Proxy 디자인 패턴은 컴포넌트의 클라이언트로 하여금 컴포넌트 자체가 아니라 컴포넌트의 대리자와 통신하도록 해준다. 이런 위치 보유자는 효율을 향상시키고, 쉽게 엑스스 할 수 있게 해주며 권한을 부여받지 못한 액세스를 방지하는 등의 역활을 할 수 있다. 문제컴포넌트에 액세스하는 작업은 런타임에 효과적이고 비용이 덜 들며 클라이언트와 컴포넌트 모두에 대해 안전해야 한다.컴포넌트에 액세스하는 작업은 클라이언트의 입장에서 투명하고 간단해야 한다. 이 컴포넌트를 호출할 때 사용하는 동작이나 구문이, 직접 액세스할 수 있는 다른 컴포넌트를 호출할 때 사용하는 동작이나 구문과 특별히 다르거나 많이 변경해서는 안 된다. 클라이언트는 원격 클라이언트에 액세스할 경우 일어날 수 있는 성능상 하락이나 비용상 손해에 대해.. 더보기
[Design pattern] Master-Slave Master-Slave - 디자인 패턴은 마스터 컴포터가 자신과 동등한 역활을 하는 Slave에 컴포넌트에 작업을 분산하고, 이 Slave들에서 반환된 결과들로 부터 최종 결과를 계산해내는 패턴이다. 문제.- 클라이언트는 계산이 분할-정복 원칙에 근거하고 있다는 사실을 알 필요가 없다. - 클라이언트나 서브태스크의 처리는 작업을 분할하고 최종 결과를 모으는 알고리즘에 좌우되어서는 안 된다.- 서브태스크들을 처리하기 위해서는 (예를 들어 계산 정확도를 향상시키기 위한 경우처럼) 서로 다르지만 의미적으로 동일한 구현들을 사용하는 것이 좋다. - 서브태스크들을 처리할 때 간혹 조정이 필요하기도 하다. 해법.장애 허용성 – 서비스의 실행을 여러 개의 복제된 구현들에 위임한다. 분할된 서비스의 실행들에 장애가 발.. 더보기
[Design pattern] Whole-Part Whole-Part - 의미적 단위로 컴포넌트를 모으는데 도움을 준다. - Whole 객체(집합 컴포넌트)는 그것을 구성하는 Part(컴포넌트) 객체들을 캡슐화 한다. 문제- 복합 객체는 작은 객체로 분해되거나 기존에 있던 객체들로 구성.- 재사용성, 가변성을 지원하며 객체들을 다른 유형의 집합 객체로 재조합.- 클라이언트는 집합 객체를 자체 구성 부분에 직접 액세스를 허용하지 않는 원자적 개체로 인식. 해법- 더 작은 객체들을 캡슐화하는 컴포넌트를 도입해서, 클라이언트가 컴포넌트의 구성 부분들에 직접 액세스 할 수 없도록 막는다.- 캡슐화된 객체들의 기능에는 직접 액세스할 수 없으며 이 객체들의 기능에 액세스하기 위해서 집합 객체의 인터페이스를 통해야 한다. Whole-Part 패턴의 일반 원칙은 다음.. 더보기