디자인패턴이 절대적인 원칙은 아니다.
패턴은 설계과정에서 도출된 가장 효율적인 방법일 뿐이다. 반드시 패턴을 사용할 필요는 없다. 특히, 생성패턴은 자주 사용하지 않는 편이 좋다. '패턴' 자체가 갖고 있는 복잡함이 버그를 발생할 가능성을 높이기 때문이다. 상황을 고려하지 않고, 무조건 생성패턴을 자주 사용하다보면 오히려 new를 사용하는 것보다 못할 때가 있다.
언제나 유스케이스에서 도출된 상위정책이 중요하다. 상위정책으로부터 아키텍처 경계를 구분하는 과정에서 자연스럽게 드러난 컴포넌트와 이에 따른 객체들간의 『메시지-관계』가 소프트웨어 설계의 핵심이다.
단, 디자인패턴을 알고 있고, 이를 활용할 수 있는 분야를 정확하게 알고 있다면 개발 아이템에 관한 영감(?)을 받을 확률이 높아진다. 또한 효율성 높은 구현을 통해 빠르게 개발할 수 있다는 장점이 있다. 디자인패턴과 좋은 설계의 관계는 닭이 먼저냐 달걀이 먼저냐의 문제다.
패턴 | 설명 | 분야 |
싱글턴 (SINGLETON) ·도구상자 모델 |
놀이동산의 자유이용권과 비슷하다. 싱글턴 패턴을 사용한다면, 싱글턴 포스팅 : https://webdoli.tistory.com/413
|
· 파일선택 도구상자 · 컬러선택 도구상자 · 사용자 설정 · 레지스트리 설정 · 히스토리 관리자 |
빌더 (BUILDER) ·카테고리 모델 |
사용빈도 : ★★★☆☆ 추천 : ★★★☆☆ 특징 : 크고 복잡한 객체를 쉽게 생성할 수 있음 빌더패턴은 메인보드와 비슷하다. 만일 메인보드와 CPU, 램이 접착제로 딱 붙어서 [Builder 다이어그램] |
· 변동GUI · 자석UI기능 · 자체 카테고리 기능 |
팩토리 메서드 (FACTORY METHOD) ·플러그인 모델 |
완성차 업체를 생각해보자. [팩토리메서드 다이어그램] |
· 파일확장자 변환 도구 · 랜더링 기능(플러그인) · 라이브러리 플러그인 |
프로토타입 (PROTOTYPE) ·레이어 모델 |
사용빈도 : ★★★★★ 추천 : ★★★★☆ 특징 : 복잡한 객체를 복사하는 상황에 유리 프로토타입 패턴은 게임의 npc와 같다. 게임의 엄청난 양의 몬스터들은 모두 특정 원본의 복사본들이다. 프로토타입은 복잡한 객체를 한 번만 생성하게 한 뒤, 약간의 수정과 동시에 다수의 객체로 복사할 수 있도록 한다. [프로토타입 다이어그램] 원본 객체가 별로 복잡하지 않다면 굳이 프로토타입을 사용할 필요가 없다. 하지만 대체적으로 객체-복사 기능은 유용할 때가 많고, 대규모 객체생성에 있어 프로토타입 패턴은 필수적이다. |
· RPG게임 몬스터 · 레이어 복제기능 |
추상팩토리 (ABSTRACT FACTORY) ·통합관리 프랜차이즈 모델 |
사용빈도 : ★★★☆☆ 추천 : ★★★☆☆ 특징 : 교체가능한 중급 이상 프로그램 제작에 편리함 추상팩토리 패턴은 글로벌 프랜차이즈 시스템과 비슷하다. 위의 그림에 표시된 지역은 나이키의 생산공장이다. 알다시피 나이키 본사는 광고만 한다. 한국의 경우, 태광실업과 같은 협력업체에서 신발을 생산하며, 나이키가 진출한 타국가 역시 상황은 똑같다. 나이키 본사는 사람들 머리속에 있는(추상화) 개념일 뿐, 실제 제품은 각 국가의 생산업체가 담당한다. 그리고 나이키와 같은 시스템이 바로 추상팩토리 패턴이다. 클라이언트는 나이키 마크가 찍혀있는 제품을 통해 나이키(추상화 클래스)를 이용하고, 나이키의 브랜드를 상속받은 생산업체(신발, 옷, 가방 등)의 제품을 구입함으로써 다시 나이키(지역 매장)를 만난다. [추상팩토리 다이어그램] |
· 자체 API제작 · 통합관리 시스템 · 대시보드 제작 |
『다이어그램 출처. ES6 자바스크립트 패턴 || 향단코드 || 2019』
'코드 스터디' 카테고리의 다른 글
GoF 디자인 패턴「행위편」 (0) | 2020.12.15 |
---|---|
GoF디자인패턴「구조편」 (0) | 2020.12.14 |
싱글톤 패턴 (0) | 2020.12.10 |
커맨드 패턴 (0) | 2020.12.09 |
탬플릿 매서드, STRATEGY 패턴 [행위] (2) | 2020.12.08 |
댓글