そのため、任意のクラスで (パターンに基づいて) コマンドを作成するには、そのクラスがレシーバー クラスを認識してコマンドのコンストラクターに渡す必要があります。これにより、クラスが結合されます。コマンド パターンを使用して、2 つのクラス間の間接性を保つ方法はありますか?
私が考えることができる唯一の解決策は次のとおりです。
- メディエーターを使用しますが、少なくともコマンドが単なるインターフェースであっても、コマンドをクラスに渡す必要があるため、正確にはわかりません
- ファサードを使用しますが、コマンド呼び出しクラスをファサードに結合します
- コマンドの代わりにイベント システムを使用しますが、実行時のオーバーヘッドが大きく、コード自体を記述するだけです。
- 作成パターンを使用してコマンドを何らかの形で作成しますが、それはすべてをそのオブジェクトに結合します
イベント システムに関する私の最大の懸念は、イベント システムでの私の経験から、送信者と受信者がお互いを知らずに対話するために書かなければならないコードの量は非常識であり、まったく実用的ではないということです。イベントでは、少なくとも 1 つの他のクラスを変更する必要があり、通常は複数のクラスを変更する必要があります。これにより、密結合された spegetti コードと同じくらい悪い問題が発生します。また、通常、イベントに応答を送信するためのクラスが必要ですが、これも非常に面倒です。