Interface Pattern 2

froajnzd·2023년 6월 6일
0

pattern

목록 보기
4/15

이전 글의 어댑터, 퍼싸드 패턴과 함께 프로그램의 뼈대/골격이 될 만한 패턴이다

1. Composite pattern

컴포지트: 개별이 될 수도 있고 집합이 될 수도 있는 객체

배경(문제상황-해결방안)

Part-Whole Hierarchy를 표현하고 싶을 때, 객체들을 트리구조로 구성할 수 있다.
Client가 개개의 객체와 그룹 객체를 동일하게 취급할 수 있게 만든다.

구조/설명

컴포지트 객체는 개별 아이템이나 복합체로 구성될 수 있다
객체는 모두 유사한 기능을 갖기에 객체 그룹을 만들어 단일 객체를 조작할 수 있다.
리프 노드와 중간 노드로 구성된 트리 구조이다.

  • 요소

컴포넌트(Figure) / 리프(Rectangle, Line, Circle) / 컴포지트(Group) / 클라이언트

  • 특징

powerful한 패턴 / 객체 / 클래스 / 동기

장점

  1. 단일 객체와 복합 객체로 구성된 클래스 계층을 정의하여, 클라이언트 코드가 단순해진다.
  2. 코드 수정을 거치지 않아도 새로운 종류의 컴포넌트 객체를 추가하기 쉽다.

예시

1) 컴퓨터 견적

  • [컴퓨터] - [스피커, cpu, 메인보드..]
  • 컴퓨터와 같은 기계장치(Equipment)들은 내부에 작은 장치들로 구성되어 있는 Part-whole 구조로 구성된다.
  • 컴퓨터의 전체 가격을 계산하려면, 모니터와 본체가격을 계산해야 하고,
    본체가격은 다시 본체를 이루는 case, power, mother board, hard disk,
    ram, cpu, … 등의 가격의 총합으로 계산할 수 있다.

2) Bank/Teller Example

2. Bridge pattern

배경(문제상황-해결방안)

여러 드로잉 프로그램에서, 여러 모양의 도형을 그리고자 할때, 클래스 수가 조합수로 증가한다.
이에, 추상(도형의 종류)과 구현(드로잉 프로그램)사이에 강한 결합이 발생한다.

이에, 추상을 구현으로부터 분리하여 독립적으로 변하게 한다.
브리지 패턴을 이용해 추상과 구현이 각각 다양할 수 있게 만든다

구조/설명

브리지 패턴 적용 과정

  1. 구현에서, 공통점변하는 부분을 구분한다.
  2. 변하는 부분을 캡슐화한다 (상속보다 집합(aggregation)을 애용한다)
  3. 추상과 구현을 분리한다.

추상과 구현

  • 상속관계

실행 시에 구현 객체 하나만 존재하며, 추상클래스와 구현 클래스가 컴파일 시에 고정된다

  • Aggregation 관계

실행 시 추상 부분 객체와 구현부분 객체 두개가 따로 존재하여, 그 두 객체의 연결이 바뀔수 있기에, 상속관계보다 더욱 유연하다

예시

디바이스 드라이버
DB; jdbc

이해참고링크 https://refactoring.guru/ko/design-patterns/bridge

profile
Hi I'm 열쯔엉

0개의 댓글