Javascript でデコレータ パターンを実装しています。
私はウィキペディアでここに例を見てきました
// Class to be decorated
function Coffee() {
this.cost = function() {
return 1;
};
}
// Decorator A
function Milk(coffee) {
this.cost = function() {
return coffee.cost() + 0.5;
};
}
// Decorator B
function Whip(coffee) {
this.cost = function() {
return coffee.cost() + 0.7;
};
}
// Decorator C
function Sprinkles(coffee) {
this.cost = function() {
return coffee.cost() + 0.2;
};
}
// Here's one way of using it
var coffee = new Milk(new Whip(new Sprinkles(new Coffee())));
alert( coffee.cost() );
// Here's another
var coffee = new Coffee();
coffee = new Sprinkles(coffee);
coffee = new Whip(coffee);
coffee = new Milk(coffee);
alert(coffee.cost());
ここで私の質問は、パターンがまだデコレータ パターンであることです。親クラスが cost() 関数の最初または最後に呼び出されるかどうかは重要ですか?
確かに、これは各デコレータの動作に依存することを認識しています...たとえば、デコレータで加算または減算ではなく乗算または除算を行っている場合、もちろん異なる結果が保証されます。
しかし、前の段落で述べた理由以外に、前後に電話をかける理由はありますか?