////
Search
Duplicate
🎨

#6 디자인 패턴

디자인 패턴

디자인 패턴이란 소프트웨어 개발에서 자주 발생하는 문제들에 대한 재사용 가능한 해결책이다.
디자인 패턴은 구체적인 구현 방법이 아니라 일종의 설계 원칙이므로, 다양한 프로그래밍 언어와 도구에 적용할 수 있다.
디자인 패턴이 필요한 이유
소프트웨어 디자인의 일반적인 문제들에 대해 시도되고 검증된 해결책을 모은 것이다. 이런 문제를 다루지 않더라고 객체 지향 디자인 원칙들을 사용해 많은 종류의 문제를 해결하는 방법을 배울 수 있다.
팀원과 더 효율적으로 의사소통 할 수 있는 공통 언어를 정의한다. 예를 들어 팀의 모두가 디자인 패턴을 이해하면 ‘그 문제를 위해서는 싱글턴을 사용하세요’ 라고 말하면 무엇을 뜻하는지 이해할 수 있고 설명할 필요도 없다.

GoF 디자인 패턴의 종류

생성 패턴
기존 코드의 재활용과 유연성을 증가시키는 객체 생성 매커니즘들을 제공한다.
구조 패턴
구조를 유연하고 효율적으로 유지하면서 객체와 클래스를 더 큰 구조로 조합하는 방법을 설명한다.
행동 패턴
객체 간의 효과적인 의사소통과 책임 할당을 처리한다.
생성 패턴
구조 패턴
행동 패턴
- 추상 팩토리 (Abstract Factory) - 빌더 (Builder) - 팩토리 메서드 (Factory Method) - 프로토타입 (Prototype) - 싱글톤 (Singleton)
- 어댑터 (Adapter) - 브리지 (Bridge) - 복합체 (Composite) - 데코레이터 (Decorator) - 퍼사드 (Facade) - 플라이웨이트 (Flyweight) - 프록시 (Proxy)
- 책임 연쇄 (Chain of Responsibility) - 커맨드 (Command) - 인터프리터 (Interpreter) - 이터레이터 (Iterator) - 미디에이터 (Mediator) - 메멘토 (Memento) - 옵저버 (Observer) - 상태 (State) - 전략 (Strategy) - 템플릿 메서드 (Template Method) - 방문자 (Visitor)
예시) 싱글톤 패턴
하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다.
주로 DB연결 모듈에 많이 사용된다.
class Singleton { constructor() { if (!Singleton.instance) { Singleton.instance = this; } return Singleton.instance; } getInstance() { return this.instance; } } const a = new Singleton(); const b = new Singleton(); console.log(a === b);
JavaScript
복사
장점:
반복적인 인스턴스 생성을 피하고 생성된 인스턴스를 재사용함으로써 메모리 공간을 절약할 수 있다.
인스턴스에 대한 전역 접근 지점을 얻는다.
단점:
독립적인 인스턴스를 만들기 어렵기 때문에 단위 테스트가 어렵다.

정리

Q. 디자인 패턴이란?

소프트웨어 개발에서 자주 발생하는 문제들에 대한 재사용 가능한 해결책으로 재사용성, 호환성, 유지보수성을 위해 사용한다.
객체의 생성방식을 결정하는 생성 패턴, 객체간의 관계를 조직하는 구조 패턴, 객체의 행위를 관리하는 행위 패턴으로 분류할 수 있다.
Reference