相続に関する状況があります。インタフェース/継承を使用しているときに重複しているコード
基本的に私は次のような状況があります。
Webサービスは、すべてのWebサービスのためのすべての一般的な機能を保持している抽象クラスです。 その後、ほとんどのWebサービスは、プロモーションWebサービス(プロモーションデータの取得)または人物に関する情報の取得(PersonWebservice)に分割されます。これらは抽象的なものです。なぜなら、それらはすべての子どもに当てはまる一般的な実装を保持しているからです(データを取得した後に余分な処理をすると思います)。子は、その子Webサービスに固有の関数と実装のみを保持します。
これまでのところとても良いですが... ...私は1つのwebservice(Webservice E)を持っています。このwebserviceは人のwebserviceとpromo webserviceの両方ですから...実際には、WebサービスとPromo/Person Webサービスの間にスーパークラスを置くことはできません。このWebservice Eが両方を行うことができる間に、ほとんどのWebサービスで機能が制限されているのは事実です。
私はインターフェイスを使用することを考えましたが、子供たちにすべてのジェネリックコードを複数回実装するか、スーパークラスの1つを拡張して、他のブランチの汎用コードの半分を複製する必要があります。私に良いデザインのようには聞こえません...
できるだけ多くの重複コードを避けながら、このようなデザイン/構造の問題を解決するには、どのような良いアプローチをとっていいでしょうか?
事前に感謝します。
何を意味するのですか?あなたはそれらの上に1つを置くことができます – Stultuske
はい申し訳ありませんが、私はそれを意味しています。 WebService - >スーパークラスnew - > Promo/PersonWebserviceのように。しかし、私は、PromoとPerson webserviceの間の「共有」プロパティを確認するのは難しいと感じています。彼らはその1つまたは両方を行う能力を持っていることがより多くです。 –
これはコードの匂いを指しています、https://en.wikipedia.org/wiki/Single_responsibility_principle、なぜWebservice Eに複数の責任があるのですか?それらを分割する方法はありませんか? –