工厂模式

Posted tang-s

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工厂模式相关的知识,希望对你有一定的参考价值。

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

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

 

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

 

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

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

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)

 

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

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

                                       

 

以上是关于工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式学习——简单工厂模式工厂模式抽象工厂模式

设计模式简单工厂模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

设计模式学习——简单工厂模式工厂模式抽象工厂模式

设计模式工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

设计模式-简单工厂工厂方法模式抽象工厂模式详解

C++工厂模式(简单工厂工厂方法抽象工厂)