본문 바로가기

디자인패턴15

Command Pattern - 행위 디자인 패턴 명령 (Command) 가장 일반적 정의 : 실행에 필요한 모든 정보들을 캡슐화 하고 이렇게 만든 모든 객체를 명령이라 할 수 있음 함수나 기능을 직접적으로 호출하는 대신 이러한 호출을 수행하려는 의도롤 나라태는 객체를 만듦 "그 의도를 구체화 하여 실제 작업으로 변환하는것을 다른 컴포넌트가 담당" -명령 : 함수, 함수를 호출하는데 필요한 정보를 캡슐화 하는 객체 -클라이언트 : 명령을 생성하고 호출자에게 제공하는 컴포넌트 -호출자 : 대상에서 명령의 실행을 담당하는 컴포넌트 -대상 : 호출의 주체, 단일한 함수이거나 객체의 멤버 함수일 수도 있음 네 컴포넌트는 패턴을 구현하는 방식에 따라 크게 달라짐 작업을 직접 실행하는 대신 명령 패턴을 사용하는 여러 어플이 있음 -명령은 나중에 실행 예약 가능 -.. 2022. 2. 14.
Middleware Pattern - 행위 디자인 패턴 미들웨어 (Middleware) Node.js 의 가장 독특한 패턴 일반적 미들웨어 : 하위 수준 메커니즘 추상화에 도움되는 소프트웨어 제품군 여기서는 "하위 계층의 서비스들과 응용 프로그램 사이에서 접착제 역할을 한다"라고 보면되겠음 1. Express의 미들웨어 Express 미들웨어는 파이프라인으로 구서오디어 들어오는 HTTP 요청과 요청에 대한 응답을 처리하는 서비스 집합임 Express 는 자유롭고 작은 웹 프레임워크, 개발자가 핵심에 손 대지 않고도 쉽게 기능을 쉽게 만들고 배포 가능 Express 미들웨어 특징 function (req, res, next) { ... } req, res는 이미 알고있고, next : 다음 미들웨어를 트리거 할 때 호출되는 콜백 어플에 대한 지원을 통해 요청을.. 2022. 2. 14.
Iterator Pattern - 행위 디자인 패턴 반복자 (Iterator) 매우 중요하고 일반적으로 사용됨 언어는 어떤 방식으로든 이 패턴을 구현함 배열, 트리 구조와 같은 컨테이너 요소들을 반복하기 위한 공통 인터페이스 또는 포로토콜을 정의 배열은 단순한 루프 필요 트리는 순회 알고리듬 필요 반복자 패턴 사용 시 알고리듬 또는 데이터 구조에 대한 세부정보는 숨기고 모든 유형의 컨테이너를 반복하는데 필요한 공통의 인터페이스를 제공 => 순회 연산의 결과를 처리하는 방식과 순회 안고리듬의 구현을 분리할 수 있음 JS 에서 반복자는 이벤트 이미터와 스트림처럼 반드시 컨테이너일 필요가 없음 다른 유형의 구조에서도 잘 동작 1. 반복자 iterator 프로토콜 = 반환되는 전체가 반복을 위한것 상속 X, 형식적 구조 X, 프로토콜을 통해 구현됨 => 사전에 .. 2022. 2. 14.
Template Pattern - 행위 디자인 패턴 템플릿 (Template) 전략패턴과 공통점이 많음 템플릿 패턴 : 컴포넌트의 스켈레톤(공통부분을 나타냄) 을 구현하는 추상 클래스를 정의함 다만 일부 단계는 정의되지 않은 상태로 존재 하위 클래스는 템플릿 함수라고하는 누락된 함수부분을 구현하여 컴포넌트의 빈 부분을 채움 목적: 모든 컴포넌트의 모든 변형 집합을 정의할 수 있도록 하는것 ! JS 는 추상 클래스를 정의하는 공식적인 방법이없음. 함수를 정의하지 않은 상태로 두거나 항상 예외를 발생시키는 함수에 할당하여 함수를 구현해야 함 템플릿과 전략 패턴은 매우 유사함, 중요한 차이점은 구조와 구현에 있음 둘다 공통 부분을 재사용하면서 구성 요소의 가변 부분을 변경할 수있음 전략 : 실행 시 동적으로 수행 템플릿 : 구체적인 클래스가 정의되는 순간, 전.. 2022. 2. 9.
State Pattern - 행위 디자인 패턴 상태 (State) "컨텍스트의 상태에 따라 전략이 변경되는 패턴" 전락 : 환경설정의 속성 또는 입력 인자와 같은 변수에 따라 전략을 선택하는 방법 => 한번 생성된 컨텍스트에서는 전략이 변경되지 않은 상태로 유지됨 상태 : 전략은 동적이며 컨텍스트의 생존 주기동안 변경 될 수 있음 => 서로 다른 컨텍스트상태에서 서로 다른 전략을 선택 Ex) 예약 시스템 -예약 처음 생성시 사용자가 예약을 확인 할 수 있음, 예약하지 않았기 떄문에 예약 O, 취소 X, 구매 이전 삭제 O -예약 완료 시 취소 O, 삭제 X -예약일 전날 취소 X, 너무 늦음 패턴을 활용하여 한 동작에서 다른 동작으로 쉽게 전환 가능 각각의 상태 변경에 따라 다른 전략이 필요함 상태 전략은 유연성과 디커플링 측면에서 최상의 결과를 제.. 2022. 2. 9.
Strategy Pattern - 행위 디자인 패턴 전략 (Strategy) 컨텍스트라는 객체를 활성화 => 변수를 "전략" 이라는 별도의 상호 교환 가능한 객체로 추출 컨텍스트 : 알고리듬 제품군의 공통적인 로직 구현 전략 : 가변적인 부분을 구현, 컨텍스트가 값에 따라 다양한 요소에 따라 동작을 조정하도록 함 교체 가능한 부품이라고 생각하면 편함. 즉, 구조에따라 다른 전략(부품)으로 바꿔 사용 우려되는 사항을 분리하는데 도움 더 나은 유연성 제공 복잡한 조건문, 동일한 역할의 범위 내 다른 컴포넌트를 혼합 시 유용 Ex) 결제 시스템 - pay() 함수에서 if else 문을 사용하여 선택한 지불 옵션에 따라 작업을 완료 - 지불 처리를 사용자가 선택한 결제 게이트웨이 로직을 구현한 전략 객체에 위임함 전략 패턴 사용시 무제한의 결제 방법을 지원, .. 2022. 2. 9.