建造者模式

【風趣的解釋】

Builder Mode

有時候帶著MM去約會,KFC可能也是一個不錯的約會地點,進去我們常常點上兩個套餐,然后很happy的聊上一兩個小時。有沒有發現我們的選的套餐,都基本上是包括一個主食,幾個輔食,一杯飲料呢?我們選好套餐,交了錢,收銀員就把單子交給里面的師傅,然后師傅按照主食、輔食、飲料的順序把食物放到盤子里(順序可能有所不同,就暫且假設他們這樣做吧),這其實就是一個建造者模式。

【正式的解釋】

建造者模式

當面臨“一個復雜對象”的創建工作,其通常由各個部分的子對象用一定的算法構成;由于需求的變化,這個復雜對象的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的算法確相對穩定。

【Python版】

#-*- coding:utf-8 -*-

#套餐A
class MealA(object):
    def mainFood(self):
        print "main food is ready."
    def sideFood(self):
        print "side food is ready."
    def drink(self):
        print "drink is ready."

#套餐B
class MealB(object):
    def mainFood(self):
        print "main food is ready."
    def sideFood(self):
        print "side food is ready."
    def drink(self):
        print "drink is ready."

#服務生
class Waiter(object):
    def deliver(self, meal):
        meal.mainFood()
        meal.sideFood()
        meal.drink()

if __name__ == "__main__":
    waiter = Waiter()
    waiter.deliver(MealA())

"""print out

main food is ready.
side food is ready.
drink is ready.
"""

【JS版】

//套餐A
function MealA(){
    
}
MealA.prototype = {
    mainFood: function(){
        console.log("main food is ready.");
    },
    sideFood: function(){
        console.log("side food is ready.");
    },
    drink: function(){
        console.log("drink food is ready.");
    }
}

//套餐B
function MealB(){
    
}
MealB.prototype = {
    mainFood: function(){
        console.log("main food is ready.");
    },
    sideFood: function(){
        console.log("side food is ready.");
    },
    drink: function(){
        console.log("drink food is ready.");
    }
}

//服務生
function Waiter(){

}
Waiter.prototype.deliver = function(meal){
    meal.mainFood();
    meal.sideFood();
    meal.drink();
};

waiter = new Waiter();
waiter.deliver(new MealA());

/*console out

main food is ready.
side food is ready.
drink food is ready.
*/
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容