본문 바로가기
Design Pattern

[Design pattern] 구조 패턴

by happy coding! 2019. 6. 13.
반응형

구조 패턴

Adapter pattern
Proxy pattern
Decorator pattern
Bridge pattern
Composite pattern
Facade pattern
Flyweight pattern

Adapter pattern

클래스의 인터페이스를 클라이언트가 원하는대로 변경한다.
Adapter는 호환 불가능한 인터페이스 떄문에 협력할 수 없는 클래스들을 협력할 수 있게 한다.
래퍼(Wrapper)로도 불린다.
레거시 시스템을 원하는 인터페이스로 사용 가능케 한다.

어뎁터 패턴 동기

  • 통신 시스템
    • 보안 A 프로토콜 라이브러리
    • 새로운 시스템의 B 프로토콜 구축에 A 라이브러리를 이용

Proxy pattern

특정 객체에 접근을 조절하기 위하여 대리자(프록시)를 둔다.
필요할 때만 비싼 대가의 기능을 접근하도록 프록시를 사이에 둔다.
시간이 많이 소요되는 불필요한 복잡한 객체를 생성하는 시간을 간단한 객체로 줄인다.

Decorator pattern

Decorator 는 우리말로 장식자라는 뜻이다. 원본에 무언가를 더하거나 제외하여 새로운 것을 만든다.
Decorator는 Proxy 패턴하고 똑같다. 차이점은 Proxy 패턴은 반환값을 수정하지 않고 온전하게 반환하지만, Decorator는 반환값을 조작해서 반환한다.
동적으로 객체에 책임을 추가한다.
데코레이터는 기능을 확장하기 위하여 서브클래스화를 융통적으로 선택할 수 있게 한다.

Bridge pattern

추상을 구현으로부터 분리하여 독립적으로 변하게 한다.
약결합을 통해 유연한 변경을 유도한다.
기능과 구현을 별도 클래스로 정의해서 분리한다.

Composite pattern

컴포지트 : 개별이 될 수도 있고 집합이 될 수도 있는 객체
컴포지트 객체는 개별 아이템이나 복합체로 구성될 수 있다.
재귀적 정의 : 스스로를 포함하는 객체

Facade pattern

복잡한 시스템을 쉽게 사용하는 방법
시스템의 부분집합을 사용한다.
시스템을 특정한 방법으로 사용한다.
고객은 CS 센터를 통해 쉽게 문제를 해결한다.

  • 퍼사드 패턴은 단순화된 인터페이스를 통해서 서브시스템을 더 쉽게 사용할 수 있도록 하기 위함이다.
  • 어떤 서브시스템에 속한 복잡한 클래스들을 단순화하고 통합된 클래스를 만들어서 제공한다.
  • 퍼사드 패턴을 이용하면 클라이언트와 서브시스템이 서로 긴밀하게 연결되지 않아도 된다.

Flyweight pattern

수많은 작은 객체를 생성하여야 할 때
사용되는 많은 객체의 생성 관리하는 객체를 따로 두어 이를 통해 필요한 객체를 참조형태로 사용하도록 한다.
본질적인 것과 부가적인 것을 구분하려 할 때 사용한다.

반응형

댓글