0

パブリック抽象メソッドを持つ抽象クラスがあります。インターフェイスを定義し、代わりに抽象クラスにそれを実装させるべきかどうか疑問に思っています。ここに一般的な経験則はありますか?現在は問題なく動作していますが、オブジェクト指向の慣例に注意したいと思います。これは現在の外観です。

public abstract class MySuckyClass
{ 
    public bool TryGetMember(GetMemberBinder binder, out object result)
    {
        result = this.GetMember(binder.Name);

        if (result == null)
            return false;

        return true;
    }

    public abstract object GetMember(string memberName);
}
4

4 に答える 4

2

あなたはさまざまな答えを持つ質問をしています。考え方次第で変わるかも。

個人的には、インターフェイスを定義してから、抽象クラスを使用して定型の機能を提供するのが好きです。これにより、別の実装を提供する必要がある場合にインターフェイスに戻ることができますが、複数の実装で同じことを行うメソッド/プロパティを処理するときに時間を節約できます。

于 2012-08-15T19:06:39.280 に答える
1

規則は、抽象化を使用することです。その点で、これはインターフェースまたは抽象クラスのいずれかを意味します。

コードがそのまま機能する場合は、不要なインターフェイスを追加するためだけにコードを変更しないでください。

于 2012-08-15T19:05:54.087 に答える
1

これは 2003 年のことですが、今でも私の心に残っています。

抽象クラスとインターフェイスの推奨事項

また、インターフェイスではできない抽象クラスでコンストラクターを定義できます。

于 2012-08-15T19:14:06.110 に答える
0

Cwalina Krzysztof による「Framework Design Guidelines」という素晴らしい本があります。私の記憶が正しければ、ガイドラインの 1 つは、開発者にクラスを拡張してもらいたい場合は抽象クラスを使用し、そうでない場合はインターフェイスを使用することでした。

于 2012-08-16T08:01:25.353 に答える