システムにコマンド パターンを実装しました。これは主に、いくつかの層があり、ロジックをリモートで「呼び出す」必要があるためです。
class DoWorkCommandMessage { int param; }
class DoWorkCommandHandler : Handler<DoWorkCommandMessage>
{
Execute(MyObject object) {
object.DoWork(message.param);
}
}
class MyObject
{
void DoWork(int param) {
_proxy.SendMessage(new DoWorkBinaryMessage(param));
}
}
ご覧のとおり、私は基本的にメッセージを取得してメソッド呼び出しに変換し、それを別の層に送信されるメッセージに変換しています。
ここに何か問題があるように感じます。
最終的に MyObject をリファクタリングしてすべてのメソッドを削除し、メッセージを受け取って翻訳し、ディスパッチする単純な ProcessMessage メソッドに置き換えました。
これは、MyObject が「オブジェクト」ではなく、ほとんど単なる変換コードになったことを除けば問題ありませんでした...
単体テストを行うには、単純なメソッド呼び出しを行うのではなく、ProcessMessage() を呼び出し続ける必要があります。
「メッセージングと変換」対「メッセージ - >メソッド - >メッセージ」アプローチの間のこの戦いについての考えを探しています。明らかに、メッセージとメソッドは非常に密接に関連しています。