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

2017-09-19  本文已影响15人  lndyzwdxhs

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)或扫描下方二维码关注,我们将持续搜寻程序员必备基础技能包提供给大家。


上一篇下一篇

猜你喜欢

热点阅读