JS設計模式 裝飾者模式

2021-10-25 08:12:28 字數 1768 閱讀 7476

昨天又學了白賀翔老師的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...