/gof-design-pattern

GoF 디자인 패턴을 TypeScript로 구현해 보기 위한 레포지토리입니다.

Primary LanguageTypeScript

GoF 디자인 패턴 프로젝트

프로젝트 목적

해당 프로젝트는 OOP로 개발을 진행할 때 유지보수와 협업의 관점에서 자주 마주하는 문제를 해결하기 위한 GoF의 디자인 패턴을 학습하기 위한 프로젝트입니다. 어떤 문제를 프로그래밍적인 관점에서 해결하기 위해 매번 새로운 방법을 도입할 필요는 없습니다. 유지보수의 관점과 협업을 위해 공통된 디자인 패턴을 사용하는 것이 더 높은 작업 효율을 보장할 것입니다.

GoF 디자인 패턴 개요

디자인 패턴의 유형은 크게 생성 패턴, 구조 패턴, 행위 패턴 3가지로 나누어집니다.

디자인 패턴을 통해 객체 지향 소프트웨어를 설계할 때 겪는 특별한 문제에 대한 간결하고 명확한 해결책을 얻고 자신의 설계를 더 융통성 있고, 모듈화 되며, 재사용 가능하고, 이해하기 쉬운 것으로 만들 수 있는 통찰력을 지니게 합니다.

01. 생성 패턴 Creational Pattern

생성패턴은 객체를 생성하는데 관련된 패턴들입니다. 객체가 생성되는 과정의 유연성을 높이고 코드의 유지를 쉽게합니다.

  • 싱글턴 패턴, 팩토리 메서드 패턴, 추상 팩토리 패턴, 빌더 패턴, 원형 패턴 등이 있습니다.

02. 구조 패턴 Structural Pattern

구조 패턴은 프로그램 구조에 관련된 패턴입니다. 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램의 구조를 설계할 때 사용하는 패턴입니다.

  • 적응자 패턴, 다리 패턴, 복합 패턴, 데코레이터 패턴, 퍼사드 패턴, 플라이웨이트 패턴, 프록시 패턴 등이 있습니다.

03. 행위 패턴 Behavioral Pattern

행위 패턴은 반복적으로 사용되는 객체들의 상호 작용을 패턴화 해놓은 패턴입니다.

  • 해석자 패턴, 템플릿 메소드 패턴, 책임사슬 패턴, 커맨드 패턴, 반복자 패턴, 메멘토 패턴, 메디에이터 패턴, 관찰자 패턴, 상태 패턴, 전략 패턴, 방문자 패턴 등이 있습니다.

디자인 패턴 고찰

쿠폰 생성 로직과 디자인 패턴

첫 직장의 첫 작업은 쿠폰을 생성하는 API를 만드는 작업이었습니다. 타입스크립트를 사용하기에 OOP를 더 잘 사용할 수 있어 해당 작업을 진행할 때 팩토리 메서드 패턴 을 사용했습니다. 이를 통해 새로운 종류의 쿠폰을 생성할 때 기존의 코드를 삭제하지 않아도 되도록 구현하였습니다.

팩토리 메소드 패턴을 통해 쿠폰 객체의 생성은 팩토리 클래스에 위임하고 새로운 쿠폰을 만들 때 해당 인터페이스와 클래스를 구현해 둔 후 팩토리 클래스의 생성 로직에 그 쿠폰을 넣어주기만 하면 더 손쉽게 기능을 추가할 수 있습니다.

Reference

  1. fbelin/design-patterns-js