問題タブ [interface-segregation-principle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
49 参照

php - インターフェイス分離の原則: オプション メソッドの多い大きなインターフェイスを分割する方法

インターフェースがあるとします:

問題は、メソッドdoSpecificAction1とメソッドdoSpecificAction2がオプションであり、すべてのワーカーでサポートされているわけではないことです。ワーカーはdoCommonAction1、 anddoCommonAction2のみ、doCommonAction1doCommonAction2and doSpecificAction1、 or doCommonAction1doCommonAction2doSpecificAction2、またはすべてのメソッドをまとめてサポートできます。

また、WorkerFactory があります。

それから私はコントローラーを持っています:

私のコードがインターフェイス分離の原則に違反していることは明らかです。私はそれをリファクタリングしたいと思います。OK、私はこのようなことをしてみます:

したがって、私のワーカーは次のようになります。

そして今、私のコントローラーはこれに変わります:

しかし、このコードは醜いように思えます。SpecificAction1AwareInterface特にandSpecificAction2AwareInterfaceはまったく関係がないため、 instanceof を使用することが良い考えであるかどうかはわかりませんWorkerInterface

私の状況に適したデザインパターンはありますか?前もって感謝します。

0 投票する
0 に答える
33 参照

java - インターフェイスの排他的な方法を使用して if ブロックなしで比較する

次のインターフェースがあります。

エンドポイントを格納するためのリストを提供するマネージャ クラスと、そのリストからエンドポイントを取得するためのメソッドがあります。それが私がこれまでにメソッドのために行ったことです:

しかし、私たちは皆、これがどこに向かっているのかを知っています。スパゲッティ コードです...そこで、私の質問は次のとおりです。そのエンドポイントを見つけて返す最良の方法は何ですか?