現在、Microsoftのユーザーインターフェイスプロセスを使用しています。 これは基本的にMVP「フレームワーク」である傾向があります。 コントローラは入力/出力引数を介して互いに通信します。デシリアパターンと工場パターンを混合する
コントローラーはこれらの2つの方法を定義しますvoid OnEnterTask(object inputArguments)
、OutputArguments OnLeaveTask()
。 基本的にすべての入力引数にはxml-dataが含まれています。
入力引数はちょうどdtoなので、xmlをどのように解釈するのかはコントローラーに任せます。
シナリオ:
CalculateProductInputArgs
- >ProductController
- >CalculateProductOutputArgs
productcontrollerはちょうど非常にうまく機能し、単一の製品を処理するために必要がある場合。 ですが、CompositeProductControllerと通信できる必要があります。
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
私の素朴な疑問:
CalculateCompositeProductInput/OutputArgs
を送信 はので、私のthougtsは工場
コード(疑似パイソン)によって作成されたデコレーターの組み合わせです。 それは良い方法ですか?それとも良いアイデアはありますか?
挨拶:)
はい、これは開発者を混乱させる可能性があります。 –