>웹 프론트엔드 >JS 튜토리얼 >js의 장식 디자인 패턴에 대한 자세한 해석

js의 장식 디자인 패턴에 대한 자세한 해석

亚连
亚连원래의
2018-06-05 17:29:511786검색

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

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;
  }

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

관련 기사:

이미지의 무작위 드래그를 구현하는 Vue.js 메소드

연속 또는 모든 반복 문자의 JS 문자열 제거 예

vue.js 또는 js 메소드를 통해 중국어 A-Z 정렬 구현

위 내용은 js의 장식 디자인 패턴에 대한 자세한 해석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.