CS/Design Pattern

[Design Pattern] 시작하기

Yeji Heo 2023. 1. 29. 17:48

최근 인터랙티브 무비 개발을 하면서 클래스 간의 관계를 맺고 정리하는 부분에서 부족함을 느꼈다.

이 부분의 발전을 위해서 디자인 패턴을 공부해보기로 했다.

 

https://www.youtube.com/watch?v=An7kqZ5D7j8&list=PLe6NQuuFBu7FhPfxkjDd2cWnTy2y_w_jZ 

디자인 패턴: 패턴처럼 자주 나타나는 클래스 사이에 관계를 맺는 방법

 

하나의 클래스가 많은 기능을 갖는 것은 바람직하지 않다. 한 클래스의 역할은 하나 내지는 최소한인 것이 좋다.

이렇게 하면 문제 발생 시 코드 수정/유지보수가 편하고 새로운 기능 추가하기에도 편하기 때문이다.

 

GoF개발자분들이 만든 디자인 패턴이 가장 대표적이다.

GoF는 객체지향 문제점을 분석해 카탈로그화 하여 아래와 같이 패턴으로 정리했다. 

이렇게 카탈로그화 된 패턴은 시스템 유지보수에 유용하고 객체 간 상호작용, 설계 의도를 금방 확인할 수 있어 유용하다.

협업이 많은 경우 통일된 개발 방식을 공유하는 것이 중요하다. 팀원간에 개발 방식에 차이가 있으면 최종 결과로 합치기가 어렵기 때문이다.

디자인 패턴을 통해 이와 같은 문제를 어느정도 해결하고 통일화 된 코드를 작성할 수 있다.

 

GoF 23개의 패턴(생성패턴5, 구조패턴7, 행위패턴11)

생성 패턴 구조 패턴 행위 패턴
Factory Method
Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Interpreter
Template Method
Chain of Responsibility
Command
Iterator
Mediator
Memento
Observer
Strategy
Visitor