☁️정리/❄️CS

[CS] 디자인 패턴_구조패턴

뿌야._. 2023. 7. 13. 23:39

💡구조 패턴이란?

구조 패턴이란 클래스나 객체를 더 큰 구조를 만드는 패턴

 

💡구조 패턴 특징

서로 독립적으로 개발한 클래스 라이브러리를 하나인 것처럼 사용 가능

인터페이스나 구현을 복합하는 것이 아니라 객체를 합성하는 방법 제공

 

💡구조 패턴 종류

Adapter

Bridge

Composite

Decorator

Facade

Flyweight

Proxy

 

💡Adapter 패턴

정의 

: 그대로 사용할 수 없는 것을 필요한 형태로 변환하여 사용하는 패턴

 

장점

: 클래스 재활용성 증가

 

단점

: 클래스를 재활용할 때 추가 코드가 필요하여 복잡도가 증가하고 속도 저하

💡Bridge 패턴

정의 

: 추상적인 부분과 구체적인 부분을 나눠 구현하는 패턴

 

장점

: 독립적으로 확장 가능

: 추상적인 부분과 구체적인 부분 분리 가능

 

단점

: 복잡도 증가

 

💡Composite 패턴

정의 

: 객체들의 관계를 트리 구조로 구성하여 부분-전체로 표현하는 패턴

 

장점

: 객체 간 결합도를 낮추고 유연성을 높임

: 객체 구조를 변경하는데 유용

: 복잡한 트리 구조를 편리하게 사용 가능

 

단점

: 트리 구조가 어울리지 않는 경우 일반화해야 할 수 있음

 

💡Decorator 패턴

정의 

: 기본 기능에 부가 기능을 추가하는 패턴

 

장점

: 기존 코드 수정 없이 확장 가능

: 실행 중에 기능 변경 가능

 

단점

: 많이 사용하면 코드가 복잡해질 수 있음

 

💡Facade 패턴

정의 

: 바깥쪽의 코드가 라이브러리 안쪽 코드에 의존하는 일을 감소시켜 주는 패턴

 

장점

: 시스템 간의 결합도를 낮춤

 

단점

: 퍼사드 클래스가 서브 시스템에 대한 모든 의존성을 가짐

 

💡Flyweight 패턴

정의 

: 클래스의 인스턴스 하나만 사용해서 여러 가상 인스턴스를 제공하고 싶을 때 사용하는 패턴

 

장점

: 메모리 줄일 수 있음

 

단점

: 공통된 자원을 사용하기 때문에 다르게 행동할 수 없음

 

💡Proxy 패턴

정의 

: 원본 객체를 대신 처리하게 함으로써 로직의 흐름을 제어하는 패턴

 

장점

: 기존객체를 수정하지 않고 새로운 기능 추가 가능 

 

단점

: 프록시 클래스를 도입해야 하므로 코드의 복잡도 증가

 

 

 

'☁️정리 > ❄️CS' 카테고리의 다른 글

[CS] 프로그래밍 패러다임  (0) 2023.08.23
[CS] MVC 패턴  (0) 2023.08.21
[CS] 디자인 패턴_행위패턴  (0) 2023.08.18
[CS] 디자인 패턴_생성패턴  (0) 2023.07.12
[CS] 디자인 패턴  (0) 2023.07.12