2011-01-06 4 views
1

私は基底クラスと派生クラスの両方を設計段階に持っています。基本クラスは1のままですが、多くの派生クラスは継承します。将来、派生クラスに変更するのは非常にコストがかかります。これを防ぐための最良のデザインを探しています。基底クラスを設計する際の継承ポリシー

実際には、派生クラスは(必要に応じて)いくつかのメソッドをオーバーライドするだけで済みますが、詳細を明らかにしたくなります。

私の質問は、今後拡張可能なポリシーに関するものです。

派生クラスに継承されたメソッド/プロパティを最小限に抑え、必要に応じて派生クラスを変更せずに次のバージョンで多くを公開できますか?

または、派生クラスで将来使用される可能性のあるものを明らかにし、必要に応じて選択するようにしてください。あなたは問題なく民間から後の時点で、保護に複数のメソッドやプロパティを変更することができます

おかげ

答えて

1

。既存の保護されたメンバーを再び秘密にすることはできないというルールだけです。

2

今のところ、保護されているメソッドの数を最小限に抑えることは間違いありません。未来を予測することは常に困難です。クラスの開発/設計中に変化するものが多すぎるので、最も良いことは、simpleを保ち、あなたが知っているもののために最高のデザインを作ることです。何か、将来の時間。

0

他の人が投稿したことに加えて、誰があなたの基本クラスのターゲットオーディエンスであるかを考えたいと思うでしょう。あなたの顧客や他の外部の消費者によって拡張されることを意図したAPIやフレームワークの一部ですか、それともあなたのコントロール下で完全に抽象化されていますか(つまり、あなたのみが派生を実装するでしょうか)?

答えによっては、公開する基本クラスについて非常に慎重に考える必要があるかもしれません。良い、柔軟な継承スキームを設計するのは難しいかもしれません。

+0

APIはありませんが、私の管理下にあります。また、派生クラスはもちろん基本クラスによって実装されているインターフェイスを実装しています。 – Xaqron

関連する問題