호빵의 IT 개발소

[C#] 디자인 패턴 본문

CS(전공지식)/프로그래밍언어

[C#] 디자인 패턴

호빵Stack 2022. 6. 22. 01:21

디자인 패턴(Design Pattern)

  • 소프트웨어를 설계하면서 자주 발생하는 문제들을 해결하기 위한 해결 방법을 일반화하여 정리
  • 디자인 패턴을 이용하여 빠르게 프로그램을 개발할 수 있다.

디자인 패턴 종류

1) 생성패턴(Creational Pattern)

  • 객체를 생성하는데 필요한 패턴
  • 객체의 생성을 캡슐화하여 전체적인 프로그램 구조에 영향을 주지 않으면서 확장성을 갖게 만드는 패턴
  • 팩토리 메서드 패턴(Factory Methods Pattern) / 추상 팩토리 패턴(Abstract Factory Pattern) / 싱글턴패턴(Singleton Pattern) / 빌더 패턴(Builder Pattern) / 프로토타입 패턴(Prototype Pattern)

 

2) 구조 패턴(Structural Pattern)

  • 기존의 객체를 확장하거나 여러개의 객체를 이용하여 더 큰 객체나 구조를 형성하는 패턴
  • 어댑터 패턴(Adapter Pattern) / 브릿지 패턴(Bridge Pattern) / 컴포지트 패턴(Composite Pattern) / 데코레이터 패턴(Decorator Pattern) / 퍼사드 패턴(Facade Pattern) / 플라이웨이트 패턴(Flyweight Pattern) / 플록시 패턴(Proxy Pattern)

 

3) 행동 패턴(Behavioral Pattern)

  • 객체나 클래스에서 행동을 묘사하는 패턴
  • 하나의 행동이 여러 행동으로 영향을 주던지, 하나의 객체에서 여러 행동을 하는 것과 같은 기능을 하게 됨
  • 책임 연쇄 패턴(Chain of Responsibility Pattern) / 커맨드 패턴(Command Pattern)  / 인터프리터 패턴(Interpreter Pattern / 이터레이터 패턴(Iterator Pattern) / 미디에이터 패턴(Mediator Pattern) / 메멘토 패턴(Memento Pattern) / 옵저버 패턴(Observer Pattern)  / 상태 패턴(State Pattern)  / 스트래티지 패턴(Strategy Pattern) / 템플릿 메서드 패턴(Template Method Pattern) / 비지터 패턴(Visitor Pattern)

 

간단한 패턴 요약

싱글턴 패턴(Singleton Pattern) - 생성 패턴

  • 간단하거나 단순한 프로그램을 만들때 유용하게 사용할 수 있는 디자인 패턴
  • 하나의 메모리를 공유하여 사용
  • 모든 데이터를 전역으로 관리할 수 있어 쉽게 접근 가능
  • 무분별하게 객체의 인스턴스가 생성 되는 것을 막아준다.

상태 패턴(State Pattern) - 행동 패턴

  • 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있음.
  • 상태를 객체화 한 패턴
  • 복잡도를 떨어뜨리기 위해 플레이어의 상태를 나눔

 

팩토리 패턴(Factory Pattern) - 생성패턴

  • 부모 클래스에 알려지지 않은 하위 클래스를 생성
  • 객체를 만들어 반환하는 함수를 제공, 초기화 과정을 외부에서 보지 못하도록 처리
  • 추상 팩토리 패턴(Abstract Factory Pattern) - 동일한 주제의 다른 팩토리를 묶음. 인터페이스를 이용하여 서로 연관되어 있는 객체 생성
  • 팩토리 메소드 패턴(Factory Methods Pattern) - 생성 할 객체의 클래스를 국한하지 않고 객체 생성. 클래스의 인스턴스를 만드는 것을 서브 클래스에 맡김

 

옵저버 패턴(Observer Pattern) - 행동패턴

  • 어떤 클래스에서 변화가 일어났을 때 다른 클래스에 통보

 

책임 연쇄 패턴(Chain of Responsibility Pattern) - 행동 패턴

  • 자신이 책임 못 질 것 같으면 책임은 자동으로 연결되어 있는 다음 책임자에게 넘어감

 

프록시 패턴(Proxy Pattern) - 구조 패턴

  • 접근 조절, 비용 절감, 복잡도 감소를 위해 접근이 힘든 객체에 대한 대역을 제공
  • 다른 무언가와 이어지는 인터페이스 역할

 

 

 

 

 

출처 및 참조 : https://math-development-geometry.tistory.com/

https://chlqhqodlekt.tistory.com/66

Comments