//定義乙個裝飾者列表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...