我在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()