본문 바로가기
OOD/Structural Design Patterns(구조패턴)

Structual Pattern (구조패턴) 개념 모음

by Box 2021. 11. 23.
728x90

Structual Pattern (7가지)

구조 패턴(Structural Pattern)은 개체들간의 관계(책임)를 파악해서 설계하는 방법이다.

 

구조 패턴이란 작은 클래스들을 상속과 합성을 이용하여 더 큰 클래스를 생성하는 방법을 제공하는 패턴입니다.

이 패턴을 사용하면 서로 독립적으로 개발한 클래스 라이브러리를 마치 하나인 양 사용할 수 있습니다. 또, 여러 인터페이스를 합성(Composite)하여 서로 다른 인터페이스들의 통일된 추상을 제공합니다.

 

구조 패턴의 중요한 포인트는 인터페이스나 구현을 복합하는 것이 아니라 객체를 합성하는 방법을 제공한다는 것입니다. 이는 컴파일 단계에서가 아닌 런타임 단계에서 복합 방법이나 대상을 변경할 수 있다는 점에서 유연성을 갖습니다.

 

--featm https://younghk.github.io/software-engineering/2020-07-06---design-pattern-structural-patterns/

어댑터 패턴 (adapter pattern) **8

한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다.

 

어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다.

 

어댑터 패턴은 서로 다른 인터페이스를 가진 두 클래스를
어댑터 클래스로 인터페이스를 통일 시켜 사용하는 방법이다.

 

Bridge Pattern  *

--feat  https://brownbears.tistory.com/498

구현부에서 추상층을 분리하여 각자 독립적으로 변형이 가능하고 확장이 가능하도록 합니다. 즉 기능과 구현에 대해서 두 개를 별도의 클래스로 구현을 합니다.

Composite  (복합체 패턴) *

객체들의 집합을 동일한 객체 타입의 한 인스턴스로 표현

 

해당 의미로는 잘 이해가 되지않는다. 예를 들어 설명 드리자면

 

파워포인트에 삼각형, 사각형, 을 각각 하나씩 만들어 놓고 삼각형사각형그룹화 했다고 가정하겠다.

이제 우리는 모든 도형을 빨간색으로 색을 색칠할려고한다.

이때 우리가 채우기 버튼을 누를때 선택하는것이 어떤 도형인지, 혹은 그룹인지에 대해서는 구분하지 않아도 된다.

파워포인트에서는 도형하나에 대한 채우기와 그룹전체에 대한 채우기 버튼이 같다.

이처럼 복합적 패턴은 전체 도형뜰을 하나의 도형을 다루듯이 관리할 수 있다는 특징을 지닙니다.

쉽게 말해 일괄적인 관리 가 가능한것.

 

복합체 패턴은 다음과 같은 오브젝트들을 갖습니다.

  • Base Component - 베이스 컴포넌트는 클라이언트가 composition 내의 오브젝트들을 다루기 위해 제공되는 인터페이스를 말합니다. 베이스 컴포넌트는 인터페이스 또는 추상 클래스로 정의되며 모든 오브젝트들에게 공통되는 메소드를 정의해야 합니다.
  • Leaf - composition 내 오브젝트들의 행동을 정의합니다. 이는 복합체를 구성하는 데 중요한 요소이며, 베이스 컴포넌트를 구현합니다. 그리고 Leaf는 다른 컴포넌트에 대해 참조를 가지면 안됩니다. 
  • Composite - Leaf 객체들로 이루어져 있으며 베이스 컴포넌트 내 명령들을 구현합니다.

Decorator Pattern (데커레이터 패턴 )  *

데커레이터는 어떤 기능에 추가적으로 기능을 덧붙이고 싶은 경우, 그 기능들을 Decorator로 만들어서 덧붙이는 방식입니다.

이는 주요 기능에 추가적인 기능을 넣거나 뺄 때 사용하게 된다.

-- feat -- https://victorydntmd.tistory.com/297?category=719467 

 

[디자인패턴] 데커레이터 패턴 ( Decorator Pattern )

데커레이터 패턴 ( Decorator Pattern ) 데커레이터는 어떤 기능에 추가적으로 기능을 덧붙이고 싶은 경우, 그 기능들을 Decorator로 만들어서 덧붙이는 방식입니다. 예를 들어, 서브웨이 샌드위치를 생

victorydntmd.tistory.com

Facade Pattern  *

Facade는 "건물의 정면"을 의미하는 단어로 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미합니다.

퍼사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고, 복잡한 소프트웨어를 사용 할 수 있게 간단한 인터페이스를 제공해줍니다.

-- feat https://lktprogrammer.tistory.com/42

 

09 퍼사드 패턴 (Facade Pattern)

퍼사드 패턴 (Facade Pattern) Facade는 "건물의 정면"을 의미하는 단어로 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미합니다. 퍼사드

lktprogrammer.tistory.com

FlyWeight Pattern ***

동일하거나 유사한 객체들 사이에 가능한 많은 데이터를 서로 공유하여 사용하도록 하여 메모리 사용량을 최소화하는 소프트웨어 디자인 패턴이다

 

Flyweight 패턴에서 사용하는 기법은 ‘인스턴스를 가능한 대로 공유시켜서 쓸데없이 new하지 않도록 한다’라는 것이다.

인스턴스가 필요할 때 항상 new하는 것이 아니라, 이미 만들어져 있는 인스턴스를 이용할 수 있으면 그것을 공유해서 사용한다.

이것이 Flyweight 패턴 의 핵심이다.

 

플라이웨이트 패턴은, 객체의 내부에서 참조하는 객체를 직접 만드는 것이 아니라, 없다면 만들고, 만들어져 있다면 객체를 공유하는 식으로 객체를 구성하는 방법이다. 

 

아래 중 해당하는 사항이 많은 상황일수록 플라이웨이트 패턴을 적용하기에 적합합니다.

  • 어플리케이션에 의해 생성되는 객체의 수가 많아야 한다.
  • 생성된 객체가 오래도록 메모리에 상주하며, 사용되는 횟수가 많다.
  • 객체의 특성을 내적 속성(Intrinsic Properties)과 외적 속성(Extrinsic Properties)으로 나눴을 때, 객체의 외적 특성이 클라이언트 프로그램으로부터 정의되어야 한다.

Proxy Pattern **

실제 객체를 바로 이용하는 것 대신 가상 객체에 실제 객체를 선언하여 실제 객체의 기능과 추가적인 기능을 사용함으로 써 기능의 흐름을 제어하는 디자인 패턴입니다.

 

2. 프록시 패턴 장점

1) 실제 객체를 수행하기 전에 전처리를 하거나 기본 객체를 캐싱할 수 있다.
2) 실제 객체를 수정하지 않고 추가적인 기능을 삽입할 수 있다.

--feat -- https://bamdule.tistory.com/154

'OOD > Structural Design Patterns(구조패턴)' 카테고리의 다른 글

Adapter Pattern (어뎁터 패턴)  (0) 2021.11.22