设计模式-工厂篇(1)

发布时间 2023-04-27 23:04:26作者: Asia_Yang

意图:

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

适用性:

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

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

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

python代码:

 

代码

# coding=utf8


class TranslateBase(object):
    def __init__(self):
        self.trans = {}

    def get(self, key):
        return self.trans.get(key, str(key))


class ChinaClass(TranslateBase):
    def __init__(self):
        self.trans = {"dog": "狗", "cat": "猫"}


class JapanClass(TranslateBase):
    def __init__(self):
        self.trans = {"dog": "gou", "cat": "mao"}


class EnglandClass(TranslateBase):
    pass


def get_class(cls_name):
    _cls_map = {"china": ChinaClass, "japan": JapanClass, "england": EnglandClass}
    return _cls_map.get(cls_name)()


ch, en = get_class("china"), get_class("england")
for item in "dog parrot cat bear".split():
    print(ch.get(item), en.get(item))