프로그래밍 공부
작성일
2023. 4. 28. 01:16
작성자
WDmil
728x90

디자인 패턴은 소프트웨어 공학에서 재사용 가능한 문제 해결 방법을 말하는 것으로, 특정한 상황에서 해결이 어려운 문제를 다양한 상황에서 적용할 수 있는 효율적인 해결책을 제공하는 방법이다.

 

디자인 패턴은 일반적인 문제 해결방법 임으로, 특정한 프로그래밍 언어나 플랫폼에 종속되지 않는다.

 

디자인 패턴은 크게 생성패턴, 구조패턴, 행동패턴 으로 나눌 수 있다. 각각의 패턴은 특정한 상황에서 효율적인 해결책을 제공한다.

 

  • 생성패턴
    • 생성 패턴은 객체를 생성하는 방법과 관련된 패턴으로, 객체를 생성하고 조합하는 방법에 대한 문제를 해결하는데 사용된다.
    • 객체 생성과 관련된 문제를 추상화하여, 코드의 재사용성과 유지보수성을 높인다.
  • 구조패턴
    • 구조 패턴은 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴이다.
    • 클래스와 객체를 조합하여 더 큰구조를 만드는 방법을 추상화 하는데 사용된다.
  • 행동 패턴
    • 행동 패턴은 객체나 클래스 사이의 알고리즘과 책임을 분배하는 패턴이다.
    • 객체간의 상호작용과 알고리즘을 추상화하여, 코드의 유연성과 재사용성을 높인다.

 

이러한 디자인 패턴은 쉽게 이야기하면, 생활꿀팁! 같은 경우와 같다고 볼 수 있다.

코드를 작성하는 데 있어서 어려운상황을 간단하게 풀어갈 수 있는 방법 들 을 정리한것 이라고 볼 수 있기 때문이다.


디자인 패턴을 사용하는 이유는 다음과 같다.

  • 코드의 재사용성을 높일 수 있다.
    • 유사한 문제가 발생할 때 다시 사용할 수 있는 패턴을 구현함 으로써 코드의 재사용성이 증가한다.
  • 코드의 가독성을 높일 수 있다.
    • 디자인 패턴을 사용하면 일관된 프로그래밍 방법을 사용함으로 코드의 가독성이 높아진다.
  • 코드의 유지보수성을 높일 수 있다.
    • 일관된 프로그래밍 방법을 사용함으로 유지보수하기가 쉬워진다.
  • 코드의 확장성을 높일 수 있다.
    • 코드를 분리시킬 수 있음으로 각 코드간의 확장성이 증가한다.

 

하지만, 디자인 패턴을 사용하는것 만이 항상 유리한것은 아니다. 디자인 패턴을 사용함 으로써 생기는 단점은 다음과 같다.

  • 코드의 복잡성이 높아질 수 있다.
    • 특정 디자인 패턴을 사용하면, 코드의 특정 부분이 무의미하게 복잡해지는 경우가 생긴다.
  • 오버 엔지니어링이 발생할 수 있다.
    • 디자인 패턴을 과도하게 사용하면, 무의미한 디자인 패턴을 적용하여 쓸모없는 코드구동방식 또는 특정 상황에서 오류가 나타나는 구동방식을 사용하게 될 수 있다.

예를 들어, 빌더 패턴은 복잡한 객체를 생성할 떄 사용된다.

 

이 패턴은 객체 생성 과정을 캡슐화 하고, 객체의 생성 과정을 유연하게 변경할 수 있다. 또한 빌더패턴을 사용하면 객체 생성 과정이 복잡해져도 코드의 가독성을 유지할 수 있다.

 

그러나, 싱글톤 패턴의 경우에는 달라질 수 있다.

이 패턴은 하나의 구조체나 클레스를 여러개를 사용하지 않고, 하나의 인스턴스만 생성하여 전체 시스템에서 공유하는 방식의 디자인 패턴이다. 그러나, 싱글톤 패턴은 오버 엔지니어링을 발생시키기 쉬운 방식이며, 멀티스레드 환경에서 사용할 경우, 전역변수 문제로 인하여 동기화 문제가 발생할 수 있다.


 

다음은 생성, 구조, 행동 패턴을 나열 정리한것이다.

[ 계속 업데이트 지속 ]

  • 생성 패턴
    1. 추상 팩토리 패턴(Abstract Factory Pattern)
    2. 빌더 패턴(Builder Pattern)
    3. 팩토리 메서드 패턴(Factory Method Pattern)
    4. 프로토타입 패턴(Prototype Pattern)
    5. 싱글톤 패턴(Singleton Pattern)
  • 구조 패턴
    1. 어댑터 패턴(Adapter Pattern)
    2. 브릿지 패턴(Bridge Pattern)
    3. 컴포지트 패턴(Composite Pattern)
    4. 데코레이터 패턴(Decorator Pattern)
    5. 퍼사드 패턴(Facade Pattern)
    6. 플라이웨이트 패턴(Flyweight Pattern)
    7. 프록시 패턴(Proxy Pattern)
  • 행동 패턴
    1. 책임 연쇄 패턴(Chain of Responsibility Pattern)
    2. 커맨드 패턴(Command Pattern)
    3. 인터프리터 패턴(Interpreter Pattern)
    4. 이터레이터 패턴(Iterator Pattern)
    5. 미디에이터 패턴(Mediator Pattern)
    6. 메멘토 패턴(Memento Pattern)
    7. 옵저버 패턴(Observer Pattern)
    8. 스테이트 패턴(State Pattern)
    9. 스트래티지 패턴(Strategy Pattern)
    10. 템플릿 메서드 패턴(Template Method Pattern)
    11. 비지터 패턴(Visitor Pattern)
728x90

'컴퓨터 용어 정리' 카테고리의 다른 글

C++ 람다식 함수 ( Lambda Function )  (0) 2023.05.05
C++ algorithm 라이브러리  (0) 2023.05.05
객체지향 설계원칙(SOLID)  (0) 2023.04.28
C++ mutable  (0) 2023.04.26
C++ Inline  (0) 2023.04.26