0

多重継承はありません。しかし、私のプロジェクト パートナーは、add, removeetc メソッドを実装するためにインターフェイスを使用していました。

コードは次のとおりです。

public interface IAccountCategoryDataSource
{
    bool Add(AccountCategory accountCategory);
    bool Update(AccountCategory accountCategory);
    bool Remove(AccountCategory accountCategory);

    AccountCategory GetById(int id);
    AccountCategory GetByName(string name);
    IEnumerable<AccountCategory> GetByParentCategory(AccountCategory category);
    IEnumerable<AccountCategory> GetTopLevelCategories();
    IEnumerable<AccountCategory> GetBySearchTerm(string searchTerm);
    IEnumerable<AccountCategory> GetAll();

    event EventHandler<ObjectAddedEventArgs> AccountCategoryAdded;
    event EventHandler<ObjectUpdatedEventArgs> AccountCategoryUpdated;
    event EventHandler<ObjectRemovedEventArgs> AccountCategoryRemoved;
}

インターフェイスの必要性を説明してください。

4

1 に答える 1

0

インターフェイスは多くの目的に使用できます。多重継承または循環参照の解決はそれらのいくつかです。

ただし、ほとんどの場合、インターフェイスは、コンシューマー(何らかの機能を必要とするクラス)と実装(この機能を実装するクラス)の間でコントラクトを作成するために使用されます。つまり、両者はこの機能が何であるかについては同意しますが、この機能がどのように実装されるかについては同意しません。その場合、コンシューマーは実装について気にする必要はなく(コンシューマーは配置されたインターフェイスを使用するだけです)、実装者は、インターフェイスのすべてのメソッドを正しく実装すると、このインターフェイスのすべてのコンシューマーがこの実装を受け入れることを確信できます。これは、コンシューマークラスと実装クラスが異なる人によって作成されている場合に特に便利ですが、コンシューマーが特定の実装に依存しないという事実を強調する必要がない場合でも使用されます。これは、オブジェクト指向で非常に優れたプラクティスです。プログラミング。

いくつかの例を示すために、整数のリストから5つの最大の整数を返すメソッドを持つクラスで作業していると想像してください。これを行う最も簡単な方法は、リスト全体を降順で並べ替えてから、最初の5つの数値を返すことです。ただし、クラスに並べ替えアルゴリズムを実装する必要はありません。これは、別個の機能であり、他のクラスに実装する必要があるためです(または、それを実行するクラスがすでに存在する可能性があります)。したがって、整数の配列を受け取り、ソートされた配列を返す1つのメソッドSortを使用してインターフェイスを定義します。この並べ替え関数がどのように実装されるかは気にせず、並べ替えを使用するだけですこのインターフェースのメソッドであり、ソートアルゴリズムについて何も知らなくてもクラスを終了できます。次に、同僚(またはあなた)がこのインターフェイスを実装する別のクラスを作成します。彼はあなたのクラスについて何も知る必要はありません。彼は好きなソートアルゴリズムを使用でき、将来いつでもアルゴリズムを変更でき、それでも一緒に機能します。

インターフェイスの必要性の良い例はプラグインです。メインアプリケーションの作成者は、彼のアプリケーションが使用する関数を使用して、公開されているインターフェイスを作成します。その後、このインターフェイスを実装してクラスを作成する人は誰でも、それをプラグインとして使用できます。

于 2012-04-15T10:51:38.300 に答える