본문 바로가기
Design Pattern

C# | Design Pattern / 디자인 패턴은 무엇일까?

by Classic Master 2024. 5. 10.
728x90

디자인패턴?

디자인 패턴 (Design Pattern)

디자인 패턴은 소프트웨어 개발에서 자주 발생하는 문제를 해결하기 위해 공식화된 해결책입니다. 이는 개발자들이 공통된 디자인 문제에 대해 반복적으로 효율적인 해결책을 사용할 수 있게 합니다. 주로 생성, 구조, 행위의 세 가지 유형으로 분류되며, 각각 객체 생성, 클래스 및 객체 구성, 객체 간 상호 작용에 초점을 맞춥니다. 이를 통해 소프트웨어의 유지 보수성과 확장성을 향상시키고, 재사용 가능한 코드를 작성하는 데 도움이 됩니다.

장점

  • 디자인 패턴은 소프트웨어 개발 중 자주 발생하는 문제에 대한 해결책을 일반화하여 정리한 것입니다. 이는 이미 검증된 솔루션을 제공함으로써 프로그래머가 새로운 문제에 직면할 때 빠르게 대응할 수 있는 장점이 있습니다. 또한, 이를 통해 소프트웨어를 보다 일관되고 유지보수하기 쉬운 형태로 개발할 수 있습니다. 이를 통해 팀원들 간의 소통과 협업이 향상되며, 기존 패턴에 새로운 기능을 추가하여 더 나은 솔루션을 만들 수도 있습니다.

디자인 패턴 종류는??

 

생성 패턴(Creational Patterns)

Singleton Pattern (싱글톤 패턴)
 예시: 로깅 시스템

  • 목적: 시스템 전체에서 한 번의 로깅 인스턴스를 사용하여 로그를 관리합니다.
  • 설명: 여러 모듈이나 클래스에서 로깅을 할 때마다 새로운 로깅 객체를 생성하지 않고, 단일한 로깅 객체를 공유하여 리소스를 절약하고 일관된 로그를 유지합니다.

Factory Method Pattern (팩토리 메서드 패턴)
 예시: 게임 캐릭터 생성

  • 목적: 다양한 유형의 게임 캐릭터를 생성하고 관리합니다.
  • 설명: 캐릭터 생성 로직을 추상화하여 각 캐릭터 유형에 대한 구체적인 생성 방법은 서브클래스에서 결정됩니다. 예를 들어, WarriorFactory, MageFactory 등이 구현될 수 있습니다.


구조 패턴(Structural Patterns)

Adapter Pattern (어댑터 패턴)
예시: 외부 라이브러리와의 데이터 통신

  • 목적: 외부 라이브러리의 인터페이스를 내부 시스템에 적응시킵니다.
  • 설명: 외부 라이브러리의 데이터 구조나 메서드가 내부 시스템과 호환되지 않을 때, 이를 감싸고 변환하여 내부 시스템에서 사용할 수 있도록 합니다.

Decorator Pattern (데코레이터 패턴)
 예시: 파일 입출력 스트림

  • 목적: 입출력 스트림에 동적으로 기능을 추가합니다.
  • 설명: 데이터를 읽고 쓰는 스트림에 압축, 암호화 등의 기능을 런타임에 동적으로 추가하여 입출력 작업을 확장합니다.


행위 패턴(Behavioral Patterns)

Strategy Pattern (스트레티지 패턴)

 예시: 정렬 알고리즘

  • 목적: 동적으로 정렬 방법을 변경하고 선택합니다.
  • 설명: 여러 정렬 알고리즘(버블 정렬, 퀵 정렬 등)을 정의하고, 필요에 따라 알고리즘을 변경하여 유연하게 사용할 수 있습니다.


Observer Pattern (옵저버 패턴)
 예시: 주식 시장 알림 서비스

  • 목적: 주식 가격 변동에 따라 구독자들에게 실시간 알림을 전달합니다.
  • 설명: 주식 시장의 가격 정보가 변경될 때마다 구독자들에게 알림을 보내고, 구독자들은 자동으로 업데이트되어 현재 가격을 확인할 수 있습니다.

이번 글에서는 디자인 패턴의 개요와 목적을 간략히 소개했습니다. 이제부터는 각 패턴을 자세히 살펴보겠습니다. 함께 하나씩 살펴보면서 어떻게 사용되는지, 어떤 문제를 해결하는지 알아보겠습니다. 디자인 패턴은 소프트웨어 개발에서 매우 중요하며, 이를 이해하고 적용함으로써 효율적이고 유지보수 가능한 코드를 작성할 수 있습니다.

반응형

 

728x90
반응형