[Design Pattern] 디자인 패턴

2025. 4. 1. 23:47·Design Pattern

1. 디자인 패턴이란?

소프트웨어 설계에서 자주 발생하는 문제를 해결하기 위한 일반적인 솔루션이다.

 

2. 디자인 패턴이 왜 중요한가?

1. 문제 해결의 일관성

  • 반복되는 문제에 대해서 일관되게 해결할 수 있다.
  • 문제에 대해 공통적으로 생각할 수 있다.
  • 공통적으로 생각하다보니 서로 다른 의견을 좁히는 과정이 생략될 수 있다.

2. 코드 가독성 및 유지보수성

  • 사람들이 고민해서 만들었기에 코드의 구조가 명확해진다.
  • 코드의 구조가 명확해짐으로서 가독성이 올라간다.
  • 협업하는 사람들이 쉽게 이해할 수 있다.

3. 코드 재사용성

  • 여러 프로젝트에서 재사용이 가능하며, 시간과 노력이 절약된다.

4. 코드 확장성

  • 설계 변화에 유연하게 대응할 수 있다.

5. 공통 언어

  • 개발자들 간의 공통 언어로 사용되어, 의사소통을 더 명확하고 간결하게 만든다.

 

3. 디자인 패턴의 철학

디자인 패턴은 객체지향 프로그래밍(OOP)의 핵심 개념과 연관되어 있다.

1. 캡슐화 (encapsulation)

  • 문제: 데이터를 외부에서 직접 조작하면 의도치 않은 상태 변경이 발생
  • 해결: 데이터를 객체 내부로 숨기고, 공개된 인터페이스로만 접근하도록 설계
  • 예시
    • Singleton 패턴 : 객체가 함수를 통해서 접근가능하다. (공개된 인터페이스로만 접근가능하다)

2. 코드 중복 방지 (DRY - Don't Repeat Yourself)

  • 문제 : 동일한 코드를 여로 곳에서 반복적으로 작성하면 유지보수성이 떨어진다.
  • 해결 : 패턴을 사용하여 중복을 최소화한다.
  • 예시
    • Template Method : TArray<int32>

 

3. 의존성 최소화 (Dependency Minimization)

  • 문제 : 하나의 변경이 다른 모듈에 영향을 주는 의존성 문제
  • 해결 : 느슨한 결합(loose coupling)을 유지하도록 설계
  • 예시
    • OCP (개방폐쇄원칙) : 확장에는 열려있으며 기존 코드 수정에는 닫혀있도록 설계
    • Observer 패턴 : 옵저버는 추가되어도 기존 옵저버의 코드 수정이 이루어지지 않는다.

 

4. 디자인 패턴의 한계

디자인 패턴이 완벽한 솔루션이 아님을 인지해야 한다.

  • 복잡성 증가
    • 잘못 사용시 불피요한 복잡성 초래
  • 학습 곡선
    • 디자인 패턴 학습 필요
  • 과잉 설계
    • 단순한 기능 구현에 디자인 패턴을 강제로 넣게 되면 비효율적일 수 있다.
  • 언어 특화 기능의 대체
    • 일부 언어에서는 자체 기능으로 디자인 패턴이 필요 없거나 자동화되어 있음

'Design Pattern' 카테고리의 다른 글

[Design Pattern] 상태 패턴 (State Pattern)  (0) 2025.04.03
[Design Pattern] 전략 패턴  (0) 2025.04.02
[DesignPattern] 모던 객체지향 설계 - 활용 예시  (0) 2025.04.01
[DesignPattern] 모던 객체지향 설계 - 추가 원칙  (0) 2025.03.31
[DesignPattern] 모던 객체지향 설계 - 객체지향의 기본 원칙  (0) 2025.03.31
'Design Pattern' 카테고리의 다른 글
  • [Design Pattern] 상태 패턴 (State Pattern)
  • [Design Pattern] 전략 패턴
  • [DesignPattern] 모던 객체지향 설계 - 활용 예시
  • [DesignPattern] 모던 객체지향 설계 - 추가 원칙
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    사전캠프
    디자인패턴
    디자인 패턴
    액터
    Implement
    actor
    소프트 레퍼런신
    퀘스트
    AI
    component
    레벨디자인
    GameplayEffect
    c++
    gas
    unreal
    assetmanager
    Design Pattern
    tsoftobjectptr
    알고리즘
    basic
    Til
    내일배움캠프
    Algorithm
    KPT회고
    하드 레퍼런싱
    unrealengine
    DesignPattern
    본캠프
    Animation
    게임동기화
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[Design Pattern] 디자인 패턴
상단으로

티스토리툴바