데코레이터 모드 설명
참고 : 한 클래스를 사용하여 다른 클래스의 기능적 객체를 동적으로 수정하고 추가 기능을 추가하십시오. 이것은 클래스 객체의 기능의 장식입니다. 장식 클래스와 장식 클래스에는 동일한 액세스 인터페이스 방법 (함수)이 필요합니다. 동적 객체 지향 클래스에서 구현은 일반적으로 동일한 인터페이스의 구현에 의해 제한됩니다. 장식 수업에는 장식 된 클래스에 대한 참조가 있어야하며, 이는 장식 클래스에서 해당 장식 클래스 방법을 호출 한 다음 수정하는 데 사용됩니다.
시나리오의 예 :
1>. 예를 들어, 우리 삶에서 옷, 셔츠, 슈트 자켓, 바지, 넥타이, 아름다운 가죽 신발 한 켤레를 입을 때; 각각의 여분의 하나는 앞면 또는 몸 전체의 장식입니다.
2>. 예를 들어, 클래스 아래에 로그를 작성하는 데 사용될 수있는 기능 메소드가 있으며 사용자가 해당 함수에 로그인하는 데 사용될 수 있습니다. 아마도 로그를 작성하기 전에 현재 연산자 정보를 얻거나 성공적으로 로그인 후 로그를 작성해야 할 수도 있습니다. 로그를 작성하기 전에 추가 작업은 일반적으로 로그를 작성하는 목적입니다. 로깅 후 로그를 성공적으로 작성하는 것은 일반적으로 로그 프로세스의 작동 정보입니다.
따라서 데코레이터 모드는 구현하는 데 사용되며 두 개는 유사하게 작동합니다. 그것은 데코레이터의 데코레이터의 기능적 대상을 확장하는데, 이는 원래 방법과 본질적으로 동일한 기능 범위입니다.
인스턴스 소스 코드
1. 장식 된 카테고리
코드 사본은 다음과 같습니다.
기능 착용 () {
}
Wear.Prototype.shirt = function () {
// 셔츠를 입는다
Console.log ( '셔츠 착용');
}
2. 데코레이터
코드 사본은 다음과 같습니다.
기능 데코레이터 (마모) {
this.wear = 마모;
}
decorator.prototype.shirt = function () {
this.wear.shirt ();
// 셔츠를 입은 후, 나는 다시 넥타이를 착용했다
}
3. 사용 방법
코드 사본은 다음과 같습니다.
var Wear = New Wear ();
var 데코레이터 = 새로운 데코레이터 (마모);
decorator.shirt ();
이를 통해 Wear Shirt 기능 대상의 동적 확장 장식을 허용합니다. 원래 장식 방법이 어떻게 수행되는지 알 필요가 없습니다. 그 기능이 무엇인지 알고, 우리가 추가하려는 추가 기능이 무엇인지 아십시오.
다른 지침
데코레이터 패턴은 객체 지향 방법을 실제로 철회합니다. 확장을 열고 수정으로 닫는 원리; [Decorated Class Wear]를 수정하고 [Decorator Class Decorator]를 확장하지 않고 원하는 모든 기능적 방법이 수행됩니다.
데코레이터 모델의 주요 특징은 데코레이터의 데코레이터에 대한 데코레이터의 참조가 데코레이터의 수정되지 않은 장식을 달성한다는 것입니다.
시뮬레이션 : 셔츠를 먼저 착용 한 다음 넥타이를 착용 한 다음 양복 : 위의 데코레이터는 변경되지 않았습니다.
2. 데코레이터 :
코드 사본은 다음과 같습니다.
기능 데코레이터 (마모) {
this.wear = 마모;
}
decorator.prototype.shirt = function () {
this.wear.shirt (); // 여기에서만 셔츠를 착용하십시오.
}
3. Decorator 서브 클래스 상속과 유사한 넥타이를 착용하고 슈트 러닝 클래스를 만듭니다.
코드 사본은 다음과 같습니다.
기능 Decorator_tie (Decorator) {
this.decorator = 데코레이터;
}
decorator_tie.prototype.shirt = function () {
this.decorator.shirt (); // 셔츠를 입는다
Console.log ( '다시 넥타이를 착용');
}
기능 Decorator_western (데코레이터) {
this.decorator = 데코레이터;
}
decorator_western.prototype.shirt = function () {
this.decorator.shirt ();
Console.log ( '다시 착용');
}
사용 방법 :
코드 사본은 다음과 같습니다.
// 먼저 셔츠를 입으십시오
var Wear = New Wear ();
var 데코레이터 = 새로운 데코레이터 (마모);
//decorator.shirt ();
// 다시 넥타이를 착용하십시오
var tie = new Decorator_tie (데코레이터);
//tie.shirt ();
// 다시 정장을 입으십시오
var Western = New Decorator_western (Tie);
Western.shirt ();
이것은 드레싱과 장식의 모의 예입니다.