私はお互いを意識しない2つのインターフェイスを持っています。インターフェイス間のフローを定義するクラスのデザインパターン名
public interface IListener
{
event SignalEventHandler SignalReceived;
}
public interface IDevice
{
Task HandleSignalAsync();
}
むしろ各リスナーがデバイスを直接呼び出したり、デバイスの実装にリスナーを渡す作るよりも、私は彼らが切り離さ維持し、個別のフローを定義したいと思います。たとえば:
public class MyApplicationFlow
{
private readonly IListener _listener;
private readonly IDevice _device;
public MyApplicationFlow(IListener listener, IDevice device)
{
_listener = listener;
_device = device;
_listener.SignalReceived += ListenerOnSignalReceived;
}
private async void ListenerOnSignalReceived(object sender, SignalEventArgs args)
{
try
{
await _device.HandleSignalAsync();
// do more stuff in real scenario
args.ProgressReporter.ReportComplete();
}
catch (Exception ex)
{
args.ProgressReporter.ReportError(ex);
}
}
}
は、流れの中に渡されたいくつかのIDevice
とIListener
実装があるかもしれません。
リスナーおよびデバイスは、アダプタのパターンに従うように見えます。しかし、MyApplicationFlow
はどうですか?
- Mediatorは、コンポーネント間の相互作用を定義しますが、ここではオブジェクトは異なるタイプであり、親クラスを認識しません。
- Facadeはいくつかのサブシステムをカプセル化しますが、ここではサブシステムは隠されていません。それらはコンストラクタに注入されます。
これが行動パターンであるか構造パターンであるかはわかりません。
オブジェクト間のフローを定義するクラスの共通名はありますか?たとえば、このパターンに続くクラス名の接尾辞として使用できるもの。 Manager
、Coordinator
、Connector
(好ましくは、.NETフレームワークで既に使用されているもの)。
または、私が何かを見つけることができないので、私は間違った木を吠えますか?このデカップリングを実現する良い方法はありますか?
はパターンが単にコード –
これは十分にフェアちょうど依存注入 – maccettura
あり、ここにはありません - 私はないすべてがパターンですね!どのように私はこの質問を改善することができますか?私はdownvotesを理解しているか分からない。 – Connell