美文网首页
【设计模式】简单工厂模式

【设计模式】简单工厂模式

作者: lndyzwdxhs | 来源:发表于2017-09-19 20:52 被阅读15次

    0x01 意图

    定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

    0x02 适用场景

    UML类图

    实例:计算器加减法案例

    当一个类不知道它所必须创建的对象的类的时候。

    当一个类希望由它的子类来指定它所创建的对象的时候。

    当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

    0x03 代码

    # coding:utf-8
    
    import os
    import json
    
    ################## 运算接口类 ##################
    class Operator(object):
        def __init__(self):
            pass
        def get_result(self, a, b):
            pass
    
    ################## 运算具体类 ##################
    class AddOperator(Operator):
        def get_result(self, a, b):
            return a+b
            
    class SubOperator(Operator):
        def get_result(self, a, b):
            return a-b
    
    ################## 简单工厂类 ##################
    class Factory(object):
        def __init__(self, type):
            self._op_dict = {
                '+' : AddOperator,
                '-' : SubOperator,
            }
            
            self.obj = self._op_dict[type]()
            
        def get_obj(self):
            return self.obj
        
    ################## 客户端代码 ##################
    opera1 = Factory('+').get_obj()
    opera2 = Factory('-').get_obj()
    
    a = 10
    b = 3
    
    result1 = opera1.get_result(a, b)
    result2 = opera2.get_result(a, b)
    
    print result1
    print result2
    
    
    

    欢迎关注微信公众号(coder0x00)或扫描下方二维码关注,我们将持续搜寻程序员必备基础技能包提供给大家。


    相关文章

      网友评论

          本文标题:【设计模式】简单工厂模式

          本文链接:https://www.haomeiwen.com/subject/iopgsxtx.html