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