-
[정보처리기사 필기] 디자인 패턴 (Design Pattern), 구조 패턴CS/정보처리기사 2023. 8. 16. 05:16반응형
구조 패턴
① 브리지(Bridge)
- 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 디자인 패턴
- 구현뿐만 아니라, 추상화된 부분까지 변경해야 하는 경우 활용
▶ Bridge 패턴의 클래스 다이어그램
▶ 등장역할
등장인물 역할 Abstraction의 역할 - '기능의 클래스 계층'의 최상위에 있는 클래스
- Implementor 역할의 메소드를 사용해서 기본적인 기능만을 제공하는 클래스RefinedAbstraction의 역할 - Abstraction 역할에 기능을 추가한 역할 Implementor의 역할 - '구현의 클래스 계층'의 최상위에 있는 클래스
- Abstraction 역할의 API를 구현하기 위한 메소드를 규정하는 역할ConcreteImplementor의 역할 - Implementor 역할의 API를 구체적으로 구현하는 역할 ② 데코레이터(Decorator)
- 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴으로 기능 확장이 필요할 때 객체 간의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주어 상속의 대안으로 사용하는 디자인 패턴
- 객체의 결합을 통해 기능을 동적으로 유연하게 확장
▶ Decorator 패턴의 클래스 다이어그램
▶ 등장역할
등장인물 역할 Component의 역할 - 기능을 추가할 때 핵심이 되는 역할 ConcreteComponent의 역할 - Component 역할의 인스턴스(API)를 구현한 구체적인 클래스 Decorator(장식자)의 역할 - Component 역할과 동일한 인터페이스(API)를 가짐
- 장식자이면서, 장식할 대상이 되기도 함ConcreteDecorator(구체적인 장식자)의 역할 - 구체적인 Decorator(장식자)의 역할 ③ 퍼사이드(Facade)
- 복잡한 시스템에 대하여 단순한 인터페이스를 제공함으로써 사용자와 시스템 간 또는 여타 시스템과의 결합도를 낮추어 시스템 구조에 대한 파악을 쉽게 하는 패턴으로 오류에 대해서 단위별로 확인할 수 있게 하며, 사용자의 측면에서 단순한 인터페이스 제공을 통해 접근성을 높일 수 있는 디자인 패턴
- 통합된 인터페이스 제공
▶ Facade 패턴의 클래스 다이어그램
▶ 등장역할
등장인물 역할 Facade(정면)의 역할 - 시스템을 구성하고 있는 그 밖의 많은 역할에 대해 '단순한 창구' 역할
- 높은 레벨에서 단순한 인터페이스(API)를 시스템 외부에 제공시스템을 구성하고 있는 그 밖의 많은 역할 - Facade 역할로부터 호출되는, 시스템을 구성하는 많은 클래스들
- 이들은 Facade 역할을 신경쓰지 않음Client(의뢰인)의 역할 - Facade 패턴을 이용하는 역할 ④ 플라이웨이트(Flyweight)
- 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스 화하여 공유함으로써 메모리를 절약하고, '클래스의 경량화'를 목적으로 하는 디자인 패턴
- 여러 개의 '가상 인스턴스'를 제공하여 메모리 절감
▶ Flyweight 패턴의 클래스 다이어그램
▶ 등장역할
등장인물 역할 Flyweight(플라이급)의 역할 - 평소대로 취급하면 프로그램이 무거워지기 때문에 공유하는 것이 좋은 것을 나타내는 역할 FlyweightFactory(플라이급의 공장)의 역할 - Flyweight 역할을 만드는 공장의 역할
- 공장을 사용해서 Flyweight 역할을 만들면 인스턴스가 공유됨Client(의뢰자)의 역할 - FlyweightFactory 역할을 사용해서 Flyweight 역할을 만들고 그것을 이용하는 역할 ⑤ 프록시(Proxy)
- '실체 객체에 대한 대리 객체'로 실체 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만들며, 이 점을 이용해서 미리 할당하지 않아도 상관없는 것들을 실제 이용할 때 할당하게 하여 메모리 용량을 아낄 수 있으며, 실체 객체를 드러나지 않게 하여 정보 은닉의 역할도 수행하는 디자인 패턴
- 특정 객체로의 접근을 제어하기 위한 용도로 사용
▶ Proxy 패턴의 클래스 다이어그램
▶ 등장역할
등장인물 역할 Subject(주체)의 역할 - Proxy 역할과 RealSubject 역할을 동일시하기 위한 인터페이스(API)를 결정 Proxy(대리인)의 역할 - Client 역할의 요구를 할 수 있는 만큼 처리
- 자신만으로 처리할 수 없으면 RealSubject 역할에게 처리를 맡김
- Proxy 역할은 정말로 RealSubject 역할이 필요해지면 그때 RealSubject 역할을 생성
- Subject 역할에서 정해지는 인터페이스(API)를 구현RealSubject(실제의 주체)의 역할 - '대리인'인 Proxy 역할에서 감당할 수 없는 일이 발생했을 때 등장하는 것이 '본인'인 RealSubject 역할
- Subject 역할에서 정해져 있는 인터페이스(API)를 구현Client(의뢰인)의 역할 - Proxy 패턴을 이용하는 구현 ⑥ 컴포지트(Composite)
- 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 하는 패턴
- 복합 객체와 단일 객체를 동일하게 취급
▶ Composite 패턴의 클래스 다이어그램
▶ 등장역할
등장인물 역할 Leaf(나뭇잎)의 역할 - '내용물'을 표시하는 역할
- 내부에는 다른 것을 넣을 수 없음Composite(복합체)의 역할 - '그릇'을 나타내는 역할
- Leaf 역할이나 Composite 역할을 넣을 수 있음Component의 역할 - Leaf 역할과 Composite 역할을 동일시하는 역할
- Lead 역할과 Composite 역할에 공통적인 상위 클래스로 실현Client(의뢰자)의 역할 - Composite 패턴의 사용자 ⑦ 어댑터(Adapter)
- 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴으로, 상속을 이용하는 클래스 패턴과 위임을 이용하는 인스턴스 패턴의 두 가지 형태로 사용되는 디자인 패턴
- 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록 타 클래스의 인터페이스를 기존 인터페이스에 덧씌움
▶ Adapter 패턴의 클래스 다이어그램(상속을 사용)
▶ Adapter 패턴의 클래스 다이어그램(위임을 사용)
▶ 등장역할
등장인물 역할 Target(대상)의 역할 - 지금 필요한 메소드를 결정 Client(의뢰자)의 역할 - Target 역할의 메소드를 사용해서 일을 함 Adaptee(개조되는 쪽)의 역할 - 이미 준비되어 있는 메소드를 가지고 있는 역할 Adapter의 역할 - 어떻게든 Target 역할을 만족시키는 역할 Reference
반응형'CS > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 디자인 패턴 (Design Pattern), 행위 패턴(2) (0) 2023.08.16 [정보처리기사 필기] 디자인 패턴 (Design Pattern), 행위 패턴(1) (0) 2023.08.16 [정보처리기사 필기] 디자인 패턴 (Design Pattern), 개념및 유형 + 생성 패턴 (0) 2023.08.16 [정보처리기사 실기] 과목9 - 소프트웨어 개발 보안 구축, 오답노트 (0) 2023.07.19 [정보처리기사 실기] 과목8 - 서버 프로그램 구현, 오답노트 (0) 2023.07.17