抽象工廠模式

【風(fēng)趣的解釋】

Abstract Factory Mode

請(qǐng)美眉去麥當(dāng)勞吃漢堡,不同的美眉有不同的口味,要每個(gè)都記住是一件煩人的事情,我一般采用Factory Method Mode,帶著美眉到服務(wù)員那兒,說“要一個(gè)漢堡”,具體要什么樣的漢堡呢,讓美眉直接跟服務(wù)員說就行了。

【正式的解釋】

抽象工廠模式

核心工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建的工作交給子類去做,成為一個(gè)抽象工廠角色,僅負(fù)責(zé)給出具體工廠類必須實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類應(yīng)當(dāng)被實(shí)例化這種細(xì)節(jié)。

【Python版】

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

#漢堡抽象工廠
class HamburgerFactory(object):
    def createHamburger(self):
        pass

#漢堡里加辣椒的工廠
class HamburgerWithPepperFacotry(HamburgerFactory):
    def createHamburger(self):
        print "A hamburder with pepper is ready."

#漢堡里加火腿的工廠
class HamburgerWithHamFacotry(HamburgerFactory):
    def createHamburger(self):
        print "A hamburder with ham is ready."

#美眉A 喜歡吃辣椒
class MeiMeiA(object):
    def getHamburder(self):
        print "I want to a hanburger with pepper."
        hamburgerFactory = HamburgerWithPepperFacotry()
        hamburgerFactory.createHamburger()

#美眉B 喜歡吃火腿
class MeiMeiB(object):
    def getHamburder(self):
        print "I want to a hanburger with ham."
        hamburgerFactory = HamburgerWithHamFacotry()
        hamburgerFactory.createHamburger()

if __name__ == "__main__":
    mA = MeiMeiA()
    mA.getHamburder()

"""print out

I want to a hanburger with pepper.
A hamburder with pepper is ready.
"""

【JS版】

//漢堡抽象工廠
function HamburgerFactory(){

}

//漢堡里加辣椒的工廠
function HamburgerWithPepperFacotry(){

}
HamburgerWithPepperFacotry.prototype = new HamburgerFactory();
HamburgerWithPepperFacotry.prototype.constructor = HamburgerWithPepperFacotry;

HamburgerWithPepperFacotry.prototype.createHamburger = function(){
    console.log("A hamburder with pepper is ready.");
}


//漢堡里加火腿的工廠
function HamburgerWithHamFacotry(){

}
HamburgerWithHamFacotry.prototype = new HamburgerFactory();
HamburgerWithHamFacotry.prototype.constructor = HamburgerWithHamFacotry;

HamburgerWithPepperFacotry.prototype.createHamburger = function(){
    console.log("A hamburder with ham is ready.");
}

//美眉A 喜歡吃辣椒
function MeiMeiA(){

}
MeiMeiA.prototype.getHamburger = function(){
    console.log("I want to a hanburger with pepper.");
    hamburgerFactory = new HamburgerWithPepperFacotry();
    hamburgerFactory.createHamburger();
}

//美眉B 喜歡吃火腿
function MeiMeiB(){

}
MeiMeiB.prototype.getHamburger = function(){
    console.log("I want to a hanburger with ham.");
    hamburgerFactory = new HamburgerWithHamFacotry();
    hamburgerFactory.createHamburger();
}

var mA = new MeiMeiA();
mA.getHamburger();

/*console out

I want to a hanburger with pepper.
A hamburder with ham is ready.
*/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容