定義:
模板方法模式是一種只需要使用繼承就可以實現的非常簡單的模式例子是泡一杯咖啡和茶模板方法模式由兩部分組成,第一部分是抽象父類,另一部分是具體的實現子類。通常抽象父類中封裝了子類的演算法框架,包括實現一些公共的方法以及封裝子類中所有方法的執行順序。子類通過繼承這個類,然後繼承了這個演算法,然後重寫父類的方法
對於咖啡的順序:
**實現:
var coffee = function
(){};
coffee.prototype.boilwater = function
();coffee.prototype.brewcoffee = function
();coffee.prototype.pourincup = function
();coffee.prototype.addsugarandmilk = function
() ;
coffee.prototype.init = function
();var coffee = new coffee();
coffee.init();
然後我們看泡一壺茶:
var tea = function
(){};
tea.prototype.boilwater = function
() tea.prototype.steepteabag = function
() tea.prototype.pourincup = function
() tea.prototype.addlimo = function
() tea.protype.init = function
()var tea = new tea();
tea.init();
我們看這兩個是不是有很多共同點?抽離下,基本是4個步驟:
**如下:
var beverage = function
(){};
beverage.prototype.boilwater = function
() ;
beverage.prototype.brew = function
(){};
beverage.prototype.pourincup = function
() {};
beverage.prototype.addcondiments = function
(){};
beverage.prototype.init = function
() ;
但是這個類在現實來說,是沒有啥意義的,我們可以讓coffee, tea繼承於beverage
var coffee = function
(){};
coffee.prototype = new beverage();
coffee.prototype.brew = function
()coffee.prototype.pourincup = function
() coffee.prototype.addcondiments = function
() var coffee = new coffee();
coffee.init();
這樣一杯咖啡就完成了,茶也可以用類似的方法來實現,我們本章說的是模板方法,那麼什麼是模板方法呢?就是beverage.prototype.init方法,這個方法中封裝了子類的演算法框架,作為演算法的模板,指導子類以何種方法和順序去執行方法
通過模板方法,我們在父類中封裝了子類的演算法框架,這些正常情況下是適用的,但是總是有特殊情況,例如有些喝咖啡的人不要加糖,利用鉤子就可以實現
var beverage = function
(){};
beverage.prototype.boilwater = function
();beverage.prototype.brew = function
();beverage.prototype.pourincup = function
();beverage.prototype.addcondiments = function
();beverage.prototype.customerwantscondiments = function
();beverage.prototype.init = function
() };
// 如果掛鉤返回 true,則需要調料
var coffeewithhook = function
(){};
coffeewithhook.prototype = new beverage();
coffeewithhook.prototype.brew = function
();coffeewithhook.prototype.pourincup = function
();coffeewithhook.prototype.addcondiments = function
();coffeewithhook.prototype.customerwantscondiments = function
();var coffeewithhook = new coffeewithhook();
coffeewithhook.init();
JavaScript設計模式
js類設計模式一 類建構函式 function myclass 定義公共屬性 myclass.prototype 定義公共方法 myclass.prototype.methoda function myclass.prototype.methodb function 呼叫 var objclass ...
JavaScript 設計模式
1 單例模式 singleton pattern 單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式會阻止其他物件例項化其自己的單例物件的副本,從而確保所有物件都訪問唯一例項。因為類控制了...
JavaScript設計模式
設計模式是什麼?設計模式就是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。為什麼要使用設計模式?設計模式可重用 讓 更容易被他人理解 保證 可靠性,設計模式使 編制真正工程化。設計模式怎麼來的?設計模式概念是由四人幫 設計模式 可復用物件導向軟體的基礎 的四位作者 提出,總共分成了三...