본문 바로가기
Computer Science/디자인패턴

[디자인패턴] 디자인 패턴이란?

by 그적 2024. 3. 29.

목차

  • 디자인 패턴이란?
  • 디자인 패턴 종류
  • 객체지향 4가지 특징, 5가지 원칙과의 관계

 


1. 디자인 패턴이란?

소프트웨어를 개발하다 보면 유사한 구조적 문제를 맞닥뜨리곤 한다. 구조적 문제를 어떻게 해결해야 할지 정형화시킨 소프트웨어 설계를 디자인 패턴이라고 부른다. 디자인 패턴을 사용함으로써 문제를 빠르게 해결할 수 있고, 패턴을 기반으로 기존 코드를 이해하기 쉬워 유지보수성이 좋다는 장점을 가진다.

 


2. 디자인 패턴 종류

가장 유명한 GoF의 디자인 패턴에서는 크게 생성, 구조, 행위 패턴으로 분류된다. 생성 패턴은 객체를 생성하거나 사용함으로써, 구조 패턴은 객체와 클래스를 구성함으로써, 행위 패턴은 클래스에 책임을 할당함으로써 문제를 해결하는 방법이다.

 

1) 생성 패턴

  • 싱글톤 패턴 (Singleton)
  • 팩토리 메서드 패턴 (Factory Method)
  • 추상 팩토리 패턴 (Abstract Factory)
  • 빌더 패턴 (Builder)
  • 프로토타입 패턴 (Prototype)

 

2) 구조 패턴

  • 어뎁터 패턴 (Adapter)
  • 브릿지 패턴 (Bridge)
  • 컴포지트 패턴 (Composite)
  • 데코레이터 패턴 (Decorator)
  • 퍼사드 패턴 (Facade)
  • 플라이웨이트 패턴 (Flyweight)
  • 프록시 패턴 (Proxy)

 

3) 행위 패턴

  • 옵저버 패턴 (Observer)
  • 전략 패턴 (Strategy)
  • 커맨드 패턴 (Command)
  • 상태 패턴 (State)
  • 책임 연쇄 패턴 (Chain of Responsibility)
  • 방문자 패턴 (Visitor)
  • 인터프리터 패턴 (Interpreter)
  • 메멘토 패턴 (Memento)
  • 중재자 패턴 (Mediator)
  • 템플릿 메서드 패턴 (Template Method)
  • 이터레이터 패턴 (Iterator)

 


3. 객체지향 특성, SOLID 원칙과의 관계

디자인 패턴은 객체지향 4가지 특징(추상화, 상속, 캡슐화, 다형성)과 5가지 원칙(SOLID 원칙)을 기반으로 설계되어 있다. 사실상 객체지향 특성과 원칙을 지키면서 코드를 자다 보면 코드의 유지보수성, 가독성, 재사용성을 향상시킬 수 있기 때문에, 아래의 특성과 원칙이 디자인 패턴의 기반이 되는 것은 당연하다.

 

객체지향 4가지 특징

  • 추상화 : 객체들의 공통적인 속성 및 기능을 추출하여 정의하는 것
  • 상속 : 상위 클래스의 기능을 가져와 재사용하는 것
  • 다형성 : 상속을 통해 기능을 확장하거나 변경하는 것
  • 캡슐화 : 클래스 내 연관된 속성과 기능을 묶어 접근을 최소화하는 것

 

객체지향 5가지 원칙 (SOLID 원칙)

  • 단일 책임 원칙(SRP) : 객체는 하나의 책임만 가져야 한다.
  • 개방-폐쇄 원칙(OCP) : 기존 코드는 변경하지 않으면서, 기능을 추가할 수 있도록 설계되어야 한다.
  • 리스코프 치환 원칙(LSP) : 자식 클래스는 부모 클래스에서 가능한 행위를 수행할 수 있어야 한다.
  • 인터페이스 분리 원칙(ISP) : 사용하지 않는 인터페이스에 의존하지 않아야 한다.
  • 의존 역전 원칙(DIP) : 높은 추상화를 가진 객체와 의존 관계를 맺어야 한다.

 

댓글