我有一个代表一个非常复杂的对象的类。可以通过多种方式创建对象:增量构建、解析不同格式的文本字符串以及分析二进制文件。到目前为止,我的策略如下:
让构造函数(
__init__
在我的情况下)将所有内部变量初始化为None
提供不同的成员函数来填充对象
让这些函数将新的、修改后的对象返回给调用者,这样我们就可以做
sd = SuperDuper().fromString(s)
例如:
class SuperDuper:
def __init__(self):
self.var1 = None
self.var2 = None
self.varN = None
## Generators
def fromStringFormat1(self, s):
#parse the string
return self
def fromStringFormat2(self, s):
#parse the string
return self
def fromAnotherLogic(self, *params):
#parse params
return self
## Modifiers (for incremental work)
def addThis(self, p):
pass
def addThat(self, p):
pass
def removeTheOtherOne(self, p):
pass
问题是班级变得非常庞大。不幸的是,我不熟悉 OOP 模式设计,但我认为对于这个问题有一个更优雅的解决方案。将生成器函数从类中取出(这样fromString(self, s)
就成了superDuperFromString(s)
一个好主意?