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