インタフェースと抽象基本クラスを含むオブジェクト指向設計を含む賢明な人々のために、いくつか質問があります。次のシナリオを検討してください:オブジェクト指向 - このインタフェース宣言を配置する場所
私は抽象バスクラス "DataObjectBase"と派生クラス "UserDataObject"を持っています。私はまた、 "IDataObject"というインターフェースを持っています。もちろん、インタフェースでは、データオブジェクトが公開しなければならないすべてのパブリックメソッドとプロパティが公開されているため、抽象ベースがすべてのデータオブジェクトに共通のメソッドとプロパティを実装していると推測できます。
私の質問は、抽象バスクラスのDataObjectBaseがインターフェイスIDataObjectで指定されたすべてのものを実装していれば、そのインターフェイスを基底クラスまたは派生クラスで宣言する必要がありますか?
基本クラスで宣言されたC#インターフェイスでは、派生クラスにimplicityが適用されますが、これがベストプラクティスですか?基本クラスにインターフェイスを実装すると、派生クラスがインターフェイスを実装することはあまり明白ではありませんが、インターフェイスを派生クラスごとに指定する必要があります。
さらに、基本クラスが抽象クラスでなかった場合、推薦は変更されますか?
2番目のサブ質問:基本クラスがIDataObjectインターフェイスのすべてのメソッド/プロパティを実装している場合は、インターフェイスも必要ですか?基本クラスのtypenameは、インタフェース名の代わりに単純に使用できます。つまり、
private DataObjectBase _dataObject;
プライベートIDataObject _dataObject;
上記の例(ここでもベースはインターフェイスによって公開されるすべてのものを実装します)では、両方に同じ派生型を割り当てることができます。個人的に私はいつもこのような状況でインターフェイスを使用していますが、私は人々の考えを聞くことで躊躇しています。
ありがとうございます。