js 데코레이션 디자인 패턴 학습 경험(자세한 답변)

亚连
풀어 주다: 2018-05-18 16:57:44
원래의
1361명이 탐색했습니다.

이 글은 자바스크립트 장식 디자인 패턴을 학습한 후 저자의 경험과 핵심 포인트를 공유할 것입니다. 관심 있는 친구들은 참고할 수 있습니다.

Decoration Design Pattern

각 기기마다 고유한 응용 시나리오와 문제 해결 방법이 있습니다. 장식 디자인 패턴은 객체에 새로운 기능을 동적으로 추가하는 방식으로 하위 클래스를 추가할 필요 없이 상속을 대체하는 데 사용되는 기술입니다. 상속은 객체의 새로운 기능을 확장할 수 있습니다. 상속 관계 대신 개체의 연관 관계를 사용하는 것이 더 유연하고 유형 시스템의 급격한 확장을 방지합니다. 이 모드는 새로 추가된 기능이 상속을 희생하여 문제를 해결하기에 충분하지 않을 때 사용하기에 적합합니다. 정육점 칼로 ^_^
장식 디자인 패턴: 객체에 몇 가지 추가 책임을 동적으로 추가합니다. 객체의 기능을 확장하기 위해 데코레이터는 상속보다 더 유연한 대안을 제공합니다.

구조 다이어그램:

Interface

var Bicycle = new Interface('Bicycle', ['assemble', 'wash', 'repair', 'getPrice']);
로그인 후 복사

Object 클래스

var AcmeComfortCuiser = function(){
};
AcmeComfortCuiser.prototype = {
  assemble: function(){
  },
  wash: function(){
  },
  repair: function(){
  },
  getPrice: function(){
  }
}
로그인 후 복사

Decoration 클래스

var BicycleDecorator = function(bicycle){
  Interface.ensureImplements(bicycle, Bicycle);
  this.bicycle = bicycle;
};
BicycleDecorator.prototype = {
  assemble: function(){
    return this.bicycle.assemble();
  },
  wash: function(){
    return this.bicycle.wash();
  },
  repair: function(){
    return this.bicycle.repair();
  },
  getPrice: function(){
    return this.bicycle.getPrice();
  }
}
로그인 후 복사

Extension 클래스

  var HeadlightDecorator = function(bicycle){
    BicycleDecorator.call(this, bicycle);
  };
  extend(HeadlightDecorator, BicycleDecorator);
  HeadlightDecorator.prototype.getPrice = function(){
    return this.bicycle.getPrice() + 15.00;
  }
로그인 후 복사

위 내용은 제가 모두를 위해 정리한 것입니다. 앞으로는 꼭 활용하겠습니다. 모두 도움이 됩니다.

관련기사:

JS 콜백 기능 사용 사례 설명

JS 콜백 기능 사용 사례 설명

nodejs크로스 도메인 처리를 위한 로컬 서버 구축

위 내용은 js 데코레이션 디자인 패턴 학습 경험(자세한 답변)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!