zoukankan      html  css  js  c++  java
  • 工厂模式

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

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

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

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

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

    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)

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

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

                                           

  • 相关阅读:
    Spring、实例化Bean的三种方法
    Spring、编码剖析Spring管理Bean的原理
    Spring、Hello Spring
    Spring、控制反转与依赖注入(概念)
    Hibernate、批量操作数据
    Hibernate、3.6.7在线帮助文档
    Hibernate、乐观锁和悲观锁
    JQuery UI 精品UI推荐
    java 为pdf添加水印图片
    Hibernate 、继承关联映射
  • 原文地址:https://www.cnblogs.com/tang-s/p/10836979.html
Copyright © 2011-2022 走看看