Light Blue Pointer
본문 바로가기
Developing/TIL(CS)

디자인 패턴

by Greedy 2024. 4. 17.

디자인 패턴이란?

프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상화관계 등을 이용하여 해결할 수 있도록 하나의 ‘규약’ 형태로 만들어 놓은 것

 

Design patterns는 Elements of Reusable Object-Oriented Software라는 책으로 처음 등장했는데

네 명의 C++ Engineer들이 썼다고 함

정답은 아니지만 알아두면 사고방식 향상에 도움이 된다고 한다

https://refactoring.guru/design-patterns

이 웹사이트에 가면 상세한 설명이 있다

 

디자인 패턴의 장점

재사용성

반복적인 문제에 대한 일반적인 해결책을 제공하므로, 이를 재사용하여 유사한 상황에서 코드를 더 쉽게 작성할 수 있다.

가독성

일정한 구조로 정리하고 명확하게 작성하여 개발자가 코드를 이해하고 유지보수하기 쉽게 만든다.

유지보수성

코드를 쉽게 모듈화 할 수 있으며, 변경이 필요한 경우 해당 모듈만 수정하여 유지보수가 쉬워진다.

확장성

새로운 기능을 추가하거나 변경할 때 디자인 패턴을 활용하여 기존 코드를 변경하지 않고도 새로운 기능을 통합할 수 있다.

안정성과 신뢰성

수많은 사람들이 인정한 모범 사례로 검증된 솔루션을 제공한다.

객체 지향의 특성과 설계 원칙 그리고 디자인 패턴

객체 지향 프로그래밍

표준화된 요리법

4대 원칙(캡슐화, 상속, 추상화, 다형성)

요리 도구

설계 원칙(SOLID)

도구의 사용법

디자인 패턴

레시피

 

디자인 패턴은 객체지향의 특성 중 상속과 인터페이스, 합성(객체를 속성으로 사용)을 이용한다.

 

디자인 패턴의 분류

1. Creational patterns

provide object creation mechanisms that increase flexibility and reuse of existing code.

코드의 유연성과 재사용성을 늘리기 위한 객체 생성 방법이다

  • Singleton
  • Prototype
  • Builder
  • Factory Method
  • Abstract Factory

2. Structural patterns

explain how to assemble objects and classes into larger structures, while keeping these structures flexible and efficient.

구조를 유연하고 효율적으로 유지하면서 객체를 조립해서 더 큰 구조가 될 수 있게 한다

  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Facade
  • Flyweight
  • Proxy

3. Behavioral patterns

take care of effective communication and the assignment of responsibilities between objects.

효과적인 소통과 객체간의 책임 할당을 담당한다

  • Iterator
  • Observer
  • Mediator
  • State
  • Strategy
  • Command
  • Chain of Responsibility
  • Memento
  • Template Method
  • Visitor

 

'Developing > TIL(CS)' 카테고리의 다른 글

NoSQL과 RDBMS의 차이  (0) 2024.05.28
Creational patterns  (0) 2024.04.18
HTTP/HTTPS  (0) 2024.04.11
SSL/TLS  (0) 2024.04.11
DB 로직 최소화 하기  (0) 2024.04.05