js修飾者模式,可復用

2021-07-25 21:16:20 字數 1318 閱讀 7372

//定義乙個裝飾者列表

functionsale(price,age)

//定義乙個靜態裝飾物件來儲存可能的裝飾方法

sale.decorators={};

//對於**的修飾方法

sale.decorators.getprice=

}//對於年齡的修飾方法

sale.decorators.getage=,

oldertwo:function(age)

}//定義裝飾方法

sale.prototype.decorateprice=function(decoratetype)

sale.prototype.decorateage=function(decoratetype)

//獲取修飾後的資料:下面是獲取**的例子,也可以是獲取別的資料

sale.prototype.get=function(sth)

returnnowage;

case"price":

list=this.pricedecoratelist

;listlength=this.pricedecoratelist.length

;varnowprice=this.price

,getprice=sale.decorators["getprice"];

for(vari=0

;i;i++)

returnnowprice;

} }else

}varsale=newsale(50

,12);

sale.decorateprice("fedtax");

sale.decorateprice("fedtax");

sale.decorateage("olderone");

sale.decorateage("oldertwo");

document.write(sale.get("price")+"

");document.write(sale.get("age")+"

");

軟體構造 可復用性 Strategy模式

問題 針對特定任務存在多種演算法,呼叫者需要根據上下文環境動態的選擇和切換。strategy模式 定義乙個演算法的介面,每個演算法用乙個類來實現,客戶端針對介面編寫程式。圖示如下 stategy介面 演算法介面 concretestategya類 具體演算法a concretestategyb類 具...

js裝飾者模式

裝飾者模式 decorator 在不改變原物件的基礎上,通過對其進行包裝拓展 新增屬性或者方法 使原有物件可以滿足使用者的更複雜需求。憶之獲 通過對輸入框互動功能的拓展,我們學習了一種可以在不了解原有功能的基礎上對功能拓展模式,這是對原有功能的一種增強與拓展。當然同樣對原有物件進行拓展的模式還有 介...

JS設計模式 裝飾者模式

昨天又學了白賀翔老師的js設計模式 裝飾者模式,下面來分享一下它的實現哈。裝飾者模式 就是在保證不改變原始物件的基礎上,新增新的方法或請求.裝飾者模式兩個要求 1.實現同一批介面 2.需要含有子類 介面類的實現 var carinte ce new bh.inte ce carinte ce get...