GoF 디자인 패턴 9 - 구조 패턴

김정환·2024년 9월 4일
0

GoF 디자인패턴

목록 보기
9/9

구조 패턴


확장

  • 클래스 → 하나의 책임(역할)으로 설계 (SRP 원칙)
    • 하지만, 하나의 책임만으로는 전체 기능을 구현할 수 없음
  • 단일 책임 (SRP) : 클래스의 행동을 분리하는 설계원칙
    • 여러 개로 분리된 책임행동 → 서로 관계를 맺고 주어진 문제를 해결

    • 객체지향 코드 → 수많은 파일로 분리된 클래스

      ⇒ 다수의 클래스에 책임을 분산 → 문제를 해결하기 위해 다시 분리된 책임들을 상호 결합

  • 객체지향 개발 : 클래스를 결합하여 더 큰 객체로 확장함 ⇒ 구조 패턴 (Structural Patterns) : 큰 구조의 객체를 형성 & 관리하는 방법들
    • 객체 확장을 위해 클래스의 상속합성을 사용
  • 구조 패턴
    • 상속의 단점을 개선

    • 합성을 통해 구조를 확장

      ⇒ 생성 패턴과 달리, 클래스 구조를 확장하기 위한 관점으로 설계된 패턴의 모음

상속

  • 객체지향 초창기 개념
    • 초기엔 객체를 확장하기 위해 상속을 많이 이용
    • 상속으로 객체를 확장 → 상위 클래스에서 정의된 객체의 속성, 동작을 모두 포함
  • 상속
    • 객체지향의 고유 특징
    • 정적인 결합을 통해 객체를 확장
      • 단, 정적인 상속 결합은 대형 프로젝트(프로그램) 개발과 유연한 작업에 한계
    • 모두 혼합된 구조 ⇒ 필요한 행위, 불필요한 행위가 모두 같이 존재
    • 강력한 결합력 ⇒ 빠르게 변화되는 현대사회에서 다양한 고객의 요청을 반영해 코드를 유지보수하기 힘들어짐

합성

  • 상속 결합의 단점 보완을 위해 객체 합성을 사용
  • 합성
    • 하나의 객체가 다른 객체를 포함하는 것
    • 대표적인 합성 : 복합 객체
      • 합성을 통해
        1. 객체의 강한 의존 관계를 줄이고 유연한 객체 구조로 변경 가능
        2. 실행 중에도 객체를 확장 가능
  • 합성을 이용한 객체 확장 → 자원을 보다 효율적으로 사용할 수 있게 함
💡 구조 패턴 : 상속보다 합성을 통해 다양한 객체 확장 방법을 제시, 제안
profile
사파 개발자

0개의 댓글