我们目前使用Microsoft的用户界面流程。 这基本上是一个MVP“框架”。 控制器通过输入/输出参数相互通信。
控制器定义了这两种方法void OnEnterTask(object inputArguments)
,OutputArguments OnLeaveTask()
。
基本上所有inputarguments都包含xml-data。
输入参数只是dto,所以它由控制器决定如何解释xml。
情景:
CalculateProductInputArgs
- > ProductController
- > CalculateProductOutputArgs
如果产品控制器只需要处理效果很好的单个产品。
但它需要能够与CompositeProductController通信。
哪个发送CalculateCompositeProductInput/OutputArgs
所以我的thougts是由工厂创建的装饰器的组合
代码(伪python):
class Processor:
"""abstract"""
def ProcessInput(input):
pass
def ProcessOutput(output):
pass
class ProductProcessor(Processor):
"""implements specific product behaviour"""
pass
class CompositeProductProcessor(ProductProcessor):
"""implements specific product behaviour"""
def __init__(productprocessor):
self.processor = productprocessor
def ProcessInput(input)
productInput = input.Product
compositeData = input.CompositeData
self.processor(productInput)
class Factory:
def CreateProcessor(input):
productprocessor = ProductProcessor() #maybe a specialized processor
if input.IsComposite():
composite = CompositeProductProcessor(productprocessor)
return composite
return productprocessor
我的简单问题。 这是一个好习惯吗?或者你有更好的想法吗?
问候:)
答案 0 :(得分:1)
有一个工厂决定你需要创建什么装饰,这是非常合理的。
我可以建议的唯一变化是,您为CompositeProductProcessor
找到了一个不同的名称,因为它不是Composite模式的实现,并且命名可能会让读者感到困惑。