1. Design Pattern Categorization

디자인 패턴에 대한 초기 학습 경험을 통해 나는 다음 표를 통해 GoF에서 언급 한 23 가지 디자인 패턴을 다룰 수있는 패턴이 무엇인지에 대해 매우 유용하게 상기시켜줍니다. 원래의 테이블은 2004 년 Elyse Nielsen에 의해 요약되었고 필자는 책의이 섹션에서 우리의 토론에 맞게 필요할 때마다 수정했습니다.

이 표를 참조로 사용하는 것이 좋지만 여기에 언급되지는 않았지만이 책의 뒷부분에서 다룰 추가 패턴이 많이 있음을 기억하십시오.

수업에 대한 간단한 설명

참고 : ES2015는 JavaScript에 대한 클래스를 기본적으로 지원하지만 JavaScript의 기존 프로토 타입 기반 상속 모델에 비해 주로 문법적인 문제가 있습니다. 이 책에서는 ES2015 수업을 다루지 않겠지 만 MDN은 훌륭한 소개가 있습니다.

이 테이블에는 "클래스"개념을 참조하는 패턴이 있습니다. ES5에서 JavaScript는 클래스없는 언어이지만 클래스는 함수를 사용하여 시뮬레이션 할 수 있습니다.

이를 달성하는 가장 일반적인 방법은 새 키워드를 사용하여 객체를 만드는 JavaScript 함수를 정의하는 것입니다. 이것은 다음과 같이 객체의 새 속성과 메서드를 정의하는 데 도움이 될 수 있습니다.

// A car "class"
function Car( model ) {

  this.model = model;
  this.color = "silver";
  this.year = "2012";

  this.getInfo = function () {
    return this.model + " " + this.year;
  };

}

그런 다음 위에서 정의한 Car 생성자를 사용하여 객체를 인스턴스화 할 수 있습니다.

var myCar = new Car("ford");

myCar.year = "2010";

console.log( myCar.getInfo() );

자바 스크립트를 사용하여 "클래스"를 정의하는 더 많은 방법을 보려면 Stoyan Stefanov의 유용한 게시물을 참조하십시오.

이제 표를 검토해 보겠습니다.

Creational 객체를 생성하는 개념에 기반합니다.
Class
Factory Method 이것은 인터페이스 된 데이터 또는 이벤트를 기반으로 여러 파생 클래스의 인스턴스를 만듭니다.
Object
Abstract Factory 구체적 클래스를 자세히 설명하지 않고 여러 클래스 패밀리의 인스턴스를 작성합니다.
Builder 객체 생성과 그 표현을 분리하면 항상 동일한 유형의 객체가 생성됩니다.
Prototype 복사 또는 복제에 사용되는 완전히 초기화 된 인스턴스입니다.
Singleton 글로벌 액세스 포인트가있는 인스턴스가 하나 뿐인 클래스입니다.
Structural 객체 블록을 만드는 아이디어를 기반으로합니다.
Class
Adapter 따라서 서로 다른 클래스의 인터페이스를 일치 시키면 호환되지 않는 인터페이스에도 불구하고 클래스가 함께 작동 할 수 있습니다.
Object
Adapter 따라서 서로 다른 클래스의 인터페이스를 일치 시키면 호환되지 않는 인터페이스에도 불구하고 클래스가 함께 작동 할 수 있습니다.
Bridge 객체의 인터페이스를 구현과 분리하여 두 객체를 독립적으로 변경할 수 있습니다.
Composite 전체 객체를 단순한 객체의 합계 이상으로 만드는 단순하고 복합적인 객체의 구조입니다.
Decorator 객체에 대체 처리를 동적으로 추가합니다.
Facade 전체 하위 시스템의 복잡성을 숨기는 단일 클래스입니다.
Flyweight 다른 곳에 포함 된 정보를 효율적으로 공유하는 데 사용되는 세분화 된 인스턴스입니다.
Proxy true 객체를 나타내는 place holder 객체입니다.
Behavioral 객체가 재생되고 함께 작동하는 방식을 기반으로합니다.
Class
Interpreter 언어 요소를 응용 프로그램에 포함시켜 의도 한 언어의 문법과 일치시키는 방법입니다.
Template Method 메소드에 알고리즘 쉘을 작성한 다음 정확한 단계를 서브 클래스로 연기합니다.
Object
Chain of Responsibility 객체 체인간에 요청을 전달하여 요청을 처리 할 수있는 객체를 찾는 방법입니다.
Command 명령 요청을 개체로 캡슐화하여 요청의 사용 가능, 로깅 및 / 또는 큐에 넣고 처리되지 않은 요청에 오류 처리를 제공합니다.
Iterator 컬렉션의 내부 동작을 모른 채 컬렉션의 요소에 순차적으로 액세스합니다.
Mediator 클래스 그룹이 서로 명시 적으로 참조하지 못하도록 클래스 간 단순화 된 통신을 정의합니다.
Memento 개체의 내부 상태를 캡처하여 나중에 복원 할 수 있습니다.
Observer 클래스 간의 일관성을 보장하기 위해 여러 클래스에 대한 변경을 알리는 방법입니다.
State 상태가 변경 될 때 객체의 동작을 변경합니다.
Stategy 구현으로부터 선택을 분리하는 클래스 내에 알고리즘을 캡슐화합니다.
Visitor 클래스를 변경하지 않고 클래스에 새 연산을 추가합니다.

results matching ""

    No results matching ""