不同类的接口设计模式



我正在寻找正确的设计模式来在类设置中实现接口。

我的文件结构如下:

模型
  1. 包含类中编写的不同模型,例如ModelsubModelAsubModelBsubsubModelC等。
  2. 计算器
  3. 包含每个型号的不同计算器工具。请注意,计算器需要导入模型属性进行计算。

我的问题是我应该如何构建我的计算器文件以遵循模型的结构。

我最初的尝试是为我的calculator编写一个ABC类,然后为模型中的每个subModel类编写一个单独的子计算器子类来实现。然而,这似乎并没有充分利用模型中规定的类结构。

我尝试的一些婴儿示例:

# in model.py
class model(object):
def __init__(self,attr1):
self.attr1 = attr1
class submodel(model):
def __init__(self, attr1, attr2):
super().__init__(attr1)
self.attr2
# in calculator.py
from model import model
class calculator(abc.ABC):
@staticmethod
@abc.abstractmethod
def calculate(model):
return model.attr1 ** 2
class subcalculator(calculator):
def calculate(model):
y = super(subcalculator, subcalculator).calculate(model)
return y + model.attr2 ** 3

我已经调查了一些设计模式目录,如这里列出的,策略似乎是正确的模式。但是那里的婴儿示例并没有解决我的担忧,因为我希望在模型文件中使用类结构。

我希望在这种情况下有人能给我一个更成熟的例子。我提前感谢。

因此,您可以像这样分离模型和计算器:

# in model.py
import calculator as cal
class model(object):
def __init__(self,attr1):
self.attr1 = attr1
def calculate(self):
return cal.defaultCalc(self)
class submodel(model):
def __init__(self, attr1, attr2):
super().__init__(attr1)
self.attr2
def calculate(self):
return cal.subCalc(self)
# in calculator.py
def defaultCalc(model):
return model.attr1 ** 2
def subCalc(model):
return defaultCalc(model) + model.attr2 ** 3

最新更新