昨天又學了白賀翔老師的js設計模式 — 裝飾者模式,下面來分享一下它的實現哈。
裝飾者模式:就是在保證不改變原始物件的基礎上,新增新的方法或請求.
裝飾者模式兩個要求:1.實現同一批介面 ,2.需要含有子類
// 介面類的實現
// var carinte***ce=new bh.inte***ce('carinte***ce',['getprice','assement']);
// var car=function(car);
// car.prototype=,
// assement:function(),
// };
// // 現在有新的需求:比如 light icebox
// var lightdecorrator=function(car);
// bh.extend(lightdecorrator,car);//原型繼承 也就繼承了原型裡面的方法
// lightdecorrator.prototype=,
// assement:function(),
// };
// // 還有其他要求 車載冰箱
// var iceboxdecorrator=function(car);
// bh.extend(iceboxdecorrator,car);//原型繼承 也就繼承了原型裡面的方法
// iceboxdecorrator.prototype=,
// assement:function(),
// };
// // 兩個特性之間不會發生任何耦合,需要哪個就新增哪個,不需要就不新增
// // 檢測
// var car=new car();
// alert(car.getprice());
// car.assement();
// // 現在想要裝車燈 在原始物件基礎上再去呼叫車燈方法
// car=new lightdecorrator(car);
// alert(car.getprice());
// car.assement();
// // 裝車燈後還想裝車載冰箱
// car=new iceboxdecorrator(car);
// alert(car.getprice()); //加了要求,價錢肯定會對應增加
// car.assement();
裝飾者模式:不僅可以用在類上,還可以用在函式上,看下面**
// 返回乙個當前時間的字串表示形式
function getdate()
;// 裝飾者 :把字串都變大寫形式
function uppercasedecorrator
(fn)
}alert
(getdate()
);//原始
getdecorratordate=
uppercasedecorrator
(getdate)
;//裝飾後
alert
(getdecorratordate()
);
js設計模式 裝飾者模式
裝飾者模式可以動態地給乙個物件新增一些額外的職責。就增加功能來說,裝飾者模式比通過繼承生成子類更為靈活。下面通過乙個例子來詳細的介紹一下。我們銷售一台電腦,每個電腦都是乙個新的computer物件,它都有乙個price屬性來表示 並且可以通過它的getprice方法來得到它的 var compute...
JS設計模式 裝飾者模式
裝飾者模式 在不必改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件 1 裝飾物件和真實物件有同樣的介面。這樣client物件就能以和真實物件同樣的方式和裝飾物件互動。2 裝飾物件包括乙個真實物件的引用 reference 3 裝飾物件...
JS設計模式之裝飾者模式
裝飾者模式就是透明把物件包裝在具有同樣介面的另一物件中。相對於建立子類來說,裝飾者是一種友好的選擇。裝飾者用於給物件增加功能,可以創造大量的子類。例如 function extend subclass,superclass f.prototype superclass.prototype subcl...