본문 바로가기
Javascript/Node.js

디자인 패턴

by v8rus 2022. 2. 3.

디자인 패턴 : 반복된 문제에 대한 재사용 가능한 해결책

 

객체지향의 디자인 패턴을 JS 에 적용

 다만 JS에서 실제 클래스나 추상 인터페이스를 가지고 있지 않음

따라서, 전통적 디자인 패턴 구현 불가능 할 수 있음
 그러나 근본적인 아이디어, 당면한 문제에 대한 해결방식은 동일함

 

생성자 디자인 패턴

  매우 기본적이고 필수적인 패턴입니다.

 

Factory Pattern - 생성자 디자인 패턴

팩토리 "특정 구현으로부터 객체의 생성을 분리" 가장 일반적인 디자인 패턴 팩토리는 함수일 뿐이라서 사용자에게 더 적은 유연성을 제공 (사용자 관점) 팩토리는 클로저를 활용하

blancpaix.tistory.com

 

 

Builder Pattern - 생성자 디자인 패턴

빌더 "유창한 인터페이스를 제공, 복잡한 객체의 생성을 단순화" 단계별로 객체를 만들 수 있음 => 가독성, 일반적인 개발자 사용성 향상 가장 좋은 상황 : 인자의 목록이 길거나, 많은 복잡한 매

blancpaix.tistory.com

 

 

Domenic Revealing Constructor Pattern - 생성자 디자인 패턴

공개 생성자? (Domenic Revealing Constructor Pattern) 일반적인 디자인 패턴 아님, JS 독자적임 https://blog.domenic.me/the-revealing-constructor-pattern/ The Revealing Constructor Pattern I want t..

blancpaix.tistory.com

 

 

Singleton Pattern - 생성자 디자인 패턴

싱글톤(Singleton) "인스턴스가 하나만 존재하도록 접근을 중앙 집중화" 객체지향에서 가장 많이 사용 Node 에서 논의할 가치가 없지만 알아두면 좋음 Node개발자가 알아둬야 할 몇가지 주의사항과

blancpaix.tistory.com

 

 

Wiring Pattern - 생성자 디자인 패턴

모듈 와이어링 (Wiring) 모든 어플리케이션은 여러 컴포넌트를 연결한 결과임 연결 방식은 프로젝트의 유지보수 및 성공에 중요함 컴포넌트 A가 주어진 기능을 수행하기 위해 컴포넌트 B가 필요. =

blancpaix.tistory.com

 

구조적 설계 패턴

  소프트웨어 공학에서 가장 널리 사용되는 패턴이래요.

 

Proxy Pattern - 구조적 설계 패턴

프록시 (Proxy, Surrogate) "다른 객체에 대한 액세스를 제어" Subject라 하는 다른 객체에 대한 액세스를 제어하는 객체    (subject == original) 프록시와 subejct 는 동일한 인터페이스를 가지며 이를 통..

blancpaix.tistory.com

기존 객체에 대한 액세스를 제어

변경 옵저버 패턴 : 반응형 프로그래밍의 패러다임 제공

 

 

 

Decorator - 구조적 설계 디자인

데코레이터 (Decorator) "기존 객체의 동작을 동적으로 증대시키는 것으로 구성된 구조적 디자인 패턴" 동작이 해당 클래스의 모든 객체에 적용되지 않음 데코레이팅 될 경우 인스턴스에만 추가됨

blancpaix.tistory.com

기존 객체에 추가적인 기능을 부여, 사실상 프록시와 큰 차이가 없다는데요...

 

 

 

Adaptor - 구조적 설계 패턴

어댑터 (Adaptor) "다른 인터페이스와 호환가능하도록 인터페이스를 변환" 어댑터의 작업이 다른 객체에 대한 하나 이상의 함수 호출로 구성 일반적으로 "컴포지션"을 사용 다른 객체의 함수로

blancpaix.tistory.com

인터페이스를 다른 형태로 변경하여 노출, 호환성 유지에 매우 효과적

 

 

행위 디자인 패턴

 

Strategy Pattern - 행위 디자인 패턴

전략 (Strategy) 컨텍스트라는 객체를 활성화 => 변수를 "전략" 이라는 별도의 상호 교환 가능한 객체로 추출 컨텍스트 : 알고리듬 제품군의 공통적인 로직 구현 전략 : 가변적인 부분

blancpaix.tistory.com

밀접하게 관련된 컴포넌트들 집합에서 공통 부분을 컨텍스트라는 컴포넌트로 추출하고 컨텍스트가 특정 동작을 실현하는데 사용할 전략 객체를 따로 정의

 

 

State Pattern - 행위 디자인 패턴

상태 (State) "컨텍스트의 상태에 따라 전략이 변경되는 패턴" 전락 : 환경설정의 속성 또는 입력 인자와 같은 변수에 따라 전략을 선택하는 방법   => 한번 생성된 컨텍스트에서는 전략

blancpaix.tistory.com

서로 다른 상태에 있을 때 컴포넌트의 동작을 모델링 할 경우 권장

 

 

Template Pattern - 행위 디자인 패턴

템플릿 (Template) 전략패턴과 공통점이 많음 템플릿 패턴 : 컴포넌트의 스켈레톤(공통부분을 나타냄) 을 구현하는 추상 클래스를 정의함 다만 일부 단계는 정의되지 않은 상태로 존재 하

blancpaix.tistory.com

전략 패턴의 "정적인"버전, 서로 달느 특정 동작들을 공통 부분의 모델링한 템플릿 클래스의 하위 클래스들로 구현

 

 

Iterator Pattern - 행위 디자인 패턴

반복자 (Iterator) 매우 중요하고 일반적으로 사용됨 언어는 어떤 방식으로든 이 패턴을 구현함 배열, 트리 구조와 같은 컨테이너 요소들을 반복하기 위한 공통 인터페이스 또는 포로토

blancpaix.tistory.com

핵심 패턴, 비동기 반복자, Node 스트림에 대한 대안으로 사용

 

 

Middleware Pattern - 행위 디자인 패턴

미들웨어 (Middleware) Node.js 의 가장 독특한 패턴 일반적 미들웨어 : 하위 수준 메커니즘 추상화에 도움되는 소프트웨어 제품군 여기서는 "하위 계층의 서비스들과 응용 프로그램 사이에서 접착제

blancpaix.tistory.com

데이터 요청과 전처리, 후처리에 어떻게 사용하는지 알 수 있음

 

 

Command Pattern - 행위 디자인 패턴

명령 (Command) 가장 일반적 정의 : 실행에 필요한 모든 정보들을 캡슐화 하고 이렇게 만든 모든 객체를 명령이라 할 수 있음 함수나 기능을 직접적으로 호출하는 대신 이러한 호출을 수행하려는

blancpaix.tistory.com

단순한 실행, 취소/재실행, 직렬화, 보다 복잡한 운영 변환 알고리듬 중 수 많은 기능 구현에 사용 

 

댓글