В настоящее время мы используем пользовательский интерфейс Process от Microsoft.Который в основном имеет тенденцию быть "Структурой" MVP.Контроллеры взаимодействуют друг с другом через аргументы ввода / вывода.
Контроллер определяет эти два метода void OnEnterTask(object inputArguments)
, OutputArguments OnLeaveTask()
.В основном все входные аргументы содержат xml-данные.
входные аргументы - просто dto's, так что это зависит от контроллера, как интерпретировать xml.
сценарий:
CalculateProductInputArgs
-> ProductController
-> CalculateProductOutputArgs
, если контроллеру продуктов просто нужно работать с отдельными продуктами, которые работают очень хорошо.но он должен иметь возможность связываться с CompositeProductController.Который посылает CalculateCompositeProductInput/OutputArgs
, поэтому мои мысли представляют собой комбинацию декораторов, которая создается заводским
кодом (псевдопифон):
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
мой простой вопрос.это хорошая практика?или у тебя есть идеи получше?
привет:)