在Python中实现工厂模式

时间:2016-05-19 12:04:20

标签: python factory

我在Python中有关于工厂模式的问题。

基于.ini文件中的配置我想使用BasicSession或AdvancedSession。这两个类都从父Session类继承了一些常用功能。有关创建某个类的实例的决定在SessionFactory中进行。

请在下面找到我的实现(简化的代码只显示一般的想法)。您对此实施有何看法?也许有更好的方法?

class SessionConfig(object):
    def __init__(self, advanced_mode_enabled, param_b):
        self.advanced_mode_enabled = advanced_mode_enabled
        self.param_b = param_b    

class Session(ISession):
    def __init__(self):
        pass

    def method_1(self):
        pass

    def method_2(self):
        pass

class BasicSession(Session):
    def __init__(self, config, a, b):
        self.config = config
        self.a = a
        self.b = b

        self.method_2 # From parent class
        self.method_3
        self.method_1 # From parent class

    def method_3(self):
        pass

class AdvancedSession(Session):
    def __init__(self, config, a, b):
        self.config = config
        self.a = a
        self.b = b

        self.method_2 # From parent class
        self.method_3
        self.method_4

    def method_3(self):
        pass

    def method_4(self):
        pass

class SessionFactory(object):
    def __init__(self, config, a, b):
        if config.advanced_mode_enabled:
            self.session = AdvancedSession(config, a, b)
        else:
            self.session = BasicSession(config, a, b)

    def get_session(self):
        return self.session

config = SessionConfig(True, 20) # in real app values are taken from .ini file
session = SessionFactory(config, 'value_1', 'value_2').get_session()

0 个答案:

没有答案