我有3个课程:A
,B
和C
,其中B
和C
都来自A
。 B
和C
都需要实现名为prepare
的方法,该方法可能被称为x
次,一旦准备阶段完成,函数final_calculation
可能会调用。我正在考虑让两个班级都有boolean
切换,这取决于我们是否处于准备阶段。如果我们处于准备阶段,则只能调用prepare
函数,否则只调用final_calculation
函数。所以A
看起来像这样:
class A:
def __init__(self):
self.prepare_state = True
def toggle_state(self):
self.prepare_state = not self.prepare_state
def prepare(self):
if self.prepare_state is False:
raise StateError
def final_calculation(self):
if self.prepare_state is True:
raise StateError
这有意义吗?它让我想起了一些Singleton或State模式,它让我想起了一个我以前从未真正使用过的互斥体。是否有我想要做的设计模式?我不想重新发明轮子,所以欢迎任何关于我应该搜索的关键词。
答案 0 :(得分:1)
State Design Pattern似乎对您的用例来说太过分了。如果您有更复杂的状态更改规则,例如仅当final_calculation
和prepare
的{{1}}被调用一次时才允许B
,或者某事
您当前的实施很简单,看起来不错。您还可以考虑将C
重命名为prepare_state
或is_final_calculation_allowed
,以使事情更加清晰。