我有一个BaseClass
对象,它继承了两个ChildClass
对象。其中每一项都是重要的代码位(>;1000行),它们各自有自己的模块。
因此,结构如下:
带基类的模块1
from abc import ABCMeta
class BaseClass(metaclass=ABCMeta):
模块2和子类1
from module1 import BaseClass
class ChildClass1(BaseClass):
模块3和子类2
from module1 import BaseClass
class ChildClass2(BaseClass):
目前,我正在使用(我认为)工厂设计模式,其中我在一个单独的模块中有一个函数,控制调用哪个ChildClass:
带类控制器的模块4
from module2 import ChildClass1
from module3 import ChildClass2
def controller():
if condition:
return ChildClass1()
else:
return ChildClass2()
我不能把这个函数放在模块1中,因为我将以循环导入结束,所以目前它位于自己的模块中
以前版本的代码将控制器作为模块1中的staticmethod
到BaseClass
的import ChildClass
语句,在staticmethod
中,但我不喜欢这种模式,所以我将其更改为当前结构
我的问题是-有没有更好的设计模式,我可以使用,而不必把所有的东西都放在同一个模块
为了解决这个问题,我决定将类控制器设置为自己的类,因此模块4的外观如下所示:
然后我只需要初始化控制器并调用strategy对象上的方法。 我相信这是Strategy design pattern的一个例子
相关问题 更多 >
编程相关推荐