【风趣的解释】
Factory Method Mode
追美眉少不了请吃饭,麦当劳的鸡翅和KFC的鸡翅都是美眉喜欢吃的。虽然口味有所不同,但不管带美眉去麦当劳还是KFC,只要向服务生说“来四个鸡翅”就行了。简单的说,麦当劳和KFC就是生产鸡翅的Factory。
【正式的解释】
工厂方法模式
消费者类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。优点: 消费者无须修改就可以接纳新产品。缺点: 当产品需要修改时,工厂类也需要做修改(如何生成产品、向消费者提供)。
【Python版】
#-*-coding:utf-8 -*-
#KFC store
class KFCStore():
def getChikenWing(self):
return "DFC chicken wing."
#MCD store
class MCDStore():
def getChikenWing(self):
return "MCD chicken wing."
#ChickenWing Factory
class ChickenWingFactory(object):
def createChickenWing(self, obj):
return obj.getChikenWing()
if __name__ == "__main__":
chickenWingFactory = ChickenWingFactory()
print chickenWingFactory.createChickenWing(KFCStore())
print chickenWingFactory.createChickenWing(MCDStore())
"""print out
DFC chicken wing.
MCD chicken wing.
"""
【JS版】
//KFC store
function KFCStore(){
}
KFCStore.prototype.getChickenWing = function(){
return "KFC chicken wing.";
};
//MCD store
function MCDStore(){
}
MCDStore.prototype.getChickenWing = function(){
return "MCD chicken wing.";
};
//ChickenWing Factory
function ChickenWingFactory(){
}
ChickenWingFactory.prototype.createChickenWing = function(obj){
return obj.getChickenWing()
};
var chickenWingFactory = new ChickenWingFactory();
console.log(chickenWingFactory.createChickenWing(new KFCStore()));
console.log(chickenWingFactory.createChickenWing(new MCDStore()));
/*console out
KFC chicken wing.
MCD chicken wing.
*/
网友评论