私はMicroservicesに基づいたアプリケーションを持っています。 HTTPリクエストを受け取るブローカ/ゲートウェイAPIがあります。次に、サービスAとサービスBの2つのサービスが追加されます。ブローカAPIがメッセージを受信すると、RabbitMQを使用してメッセージがサービスに送信されます。そして、それぞれの中で私はそれを処理し、メッセージに応じて違った処理をするべきです(別のアクションを実行してください)。Microservicesリクエストを処理するためのデザインパターン
これは私が現在のメッセージを処理する方法である:
サービスA
public string ProcessAsync(Message message)
{
switch (message.EventCode)
{
case "context 1":
return action1();
case "context 2":
return action2();
case "context 3":
return action3();
case "context 4":
return action4();
case "context 5":
return action5();
default:
throw new Exception("Unknown message event code!");
}
}
私は5以下持っている場合には、switchステートメントを使用することは理にかなっています - 10種類のメッセージタイプを。しかし、私のアプリでは30歳です。そのような大きな条件文を書くことは、維持するには醜く、異なっています。私はアプリケーションからこの問題を取り除く予定のデザインパターンを探しています。あなたはなにか考えはありますか?ステートパターンについてどう思いますか?
https://sourcemaking.com/refactoring/replace-conditional-with-polymorphism – jaco0646