• python 工厂方法


    工厂方法模式(FACTORY METHOD)是一种常用创建型设计模式,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类, 通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。

    抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。

    具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建。

    抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。

    具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。

    '''
    矿泉水生产
    矿泉水有:农夫水、娃哈哈水、怡宝水  这块是变化的部分,不变的是水  水是稳定的 所以提取出来做抽象类
    '''
    
    import abc
    import datetime
    
    
    class AbsShui(abc.ABC):
    
        def __init__(self):
            '生产日期'
            self.datatiem = datetime.datetime.now()
    
        @abc.abstractmethod
        def say(self):
            pass
    
    
    '娃哈哈水'
    
    
    class WaHaHaShui(AbsShui):
        def say(self):
            return "hi~我叫娃哈哈 %s" % self.datatiem
    
    
    '农夫水'
    
    
    class NongFuShui(AbsShui):
        def say(self):
            return "hi~我叫小农 %s" % self.datatiem
    
    
    '工厂类'
    
    
    class ShuiFactory(abc.ABC):
    
        @abc.abstractmethod
        def __call__(self):
            pass
    
    
    class WaHaHaFactory(ShuiFactory):
        def __call__(self):
            return WaHaHaShui()  
    
    
    class NongFuShuiFactory(ShuiFactory):
        def __call__(self):
            return NongFuShui()
    
    
    '专卖店'
    
    
    class ZhuanMaiDian:
    
        def __init__(self, factory: ShuiFactory):
            self.shui = factory   # 多态 解耦
    
        def chu_shou(self):
            o = self.shui()   # 生产水
            print(o.say())
    
    
    '哇哈哈专卖店'
    whh = ZhuanMaiDian(WaHaHaFactory())
    
    '''
    生产水
    '''
    whh.chu_shou()
    whh.chu_shou()
    whh.chu_shou()
    
    
    '农夫专卖店'
    hf = ZhuanMaiDian(NongFuShuiFactory())
    
    hf.chu_shou()
  • 相关阅读:
    C# 反射 通过类名创建类实例
    c#委托把方法当成参数
    PPT美化大师
    以Outlook样式分组和排列数据项
    使用windows服务和MSMQ和进行日志管理(解决高并发问题)
    springboot配置filter
    filter 中用spring StopWatch 监控请求执行时间
    spring计时工具类stopwatch用法
    Spring异步任务处理,@Async的配置和使用
    注解用法详解——@SuppressWarnings
  • 原文地址:https://www.cnblogs.com/whnba/p/11920853.html
Copyright © 2020-2023  润新知