工厂模式

官方定义:在工厂设计模式中,客户端可以请求一个对象,而无需知道这个对象来自哪里,也就是使用哪个类来生成这个对象

大白话:我不用管这东西怎样来,我只知道有这东西,我就可以得到

通过模拟真实环境还原工厂模式,本案例模拟手机店买手机的情况

今年小王新开了一间手机店,他的经营模式是这样的:有人买手机---->手机店利用机器制造手机---->交付给顾客

然后有了接下来的经营情况:

1、普通模式                                                

场景1:【小明】到手机店买苹果手机
       【手机店】开始【调用苹果机器】制造苹果
        手机店售卖这苹果手机给小明
场景2:【小东】到手机店买华为手机
       【手机店】开始【调用机器】制造华为手机
        手机店售卖这华为给小东

代码实现:

#-------------手机店-------------------------
class PhoneStore(object):
  #根据客户需求调用机器生产手机
def shellPhone(self,phone_type): if phone_type == "华为": return Hawei() elif phone_type == '苹果': return Iphone() elif phone_type == 'oppo': return Oppo()
#--------------制造手机的机器--------------------
def Hawei(): print('生产华为手机') def Iphone(): print('生产苹果手机') def Oppo(): print('生产oppo手机')
#----------------买手机-----------------------
if __name__ == '__main__': store = PhoneStore() store.shellPhone('苹果')

小王手机店按照这种模式经营,时间久了,发现这种模式不行,每一次来一个人买手机,手机店就要制造一台手机,非常的麻烦;

想着如果手机交给工厂制造,手机店只需要一个电话就可以拿到手机,

工厂模式:有人买手机---->手机店联系工厂---->工厂制造手机并交给手机店---->手机店交付顾客

接下来手机店使用工厂模式试营:

2、工厂模式                                                

 

场景1:【小明】到手机店买苹果手机
           【手机店】联系工厂生产苹果手机
            【工厂】制造苹果手机并给手机店
             手机店把手机交给小明
    
场景2:【小东】到手机店买华为手机
           【手机店】联系工厂生产华为手机
            【工厂】制造华为手机并给手机店
             手机店把手机交给小东

代码实现:

#---------------手机店---------------------
class
PhoneStore(object): def __init__(self): self.factory = PhoneFactory() def sellPhone(self,phone_type): return self.factory.createPhone(phone_type)
#------------------工厂制造手机----------------------
class PhoneFactory: def createPhone(self,phone_type): if phone_type == "华为": return Hawei() elif phone_type == '苹果': return Iphone() elif phone_type == 'oppo': return Oppo()
#------------------机器---------------------------
def Hawei(): print('工厂生产华为手机') return '华为手机' def Iphone(): print('工厂生产苹果手机') return '苹果手机' def Oppo(): print('工厂生产oppo手机') return 'oppo手机'
#-------------------买手机----------------------------- if __name__ == '__main__': store = PhoneStore() phone = store.sellPhone('苹果') print('小明拿到的手机:%s' %phone)

小王按照工厂模式经营一点时间,发现了这个模式有个好处就是,

当顾客购买手机,手机店可以不用管手机是怎样制造,只要联系厂家和交付就可以,一个字爽,感觉就是在做一个中间商,赚差价

                                       

原文地址:https://www.cnblogs.com/tang-s/p/10836979.html