我有一个关于Python工厂模式的问题。在
根据.ini文件中的配置,我想使用BasicSession或AdvancedSession。两个类都从父会话类继承一些公共功能。在一个关于创建一个类的工厂的实例中。在
请在下面找到我的实现(代码经过简化,仅显示了总体思想)。你觉得这个实现怎么样?也许还有更好的方法?在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()