2011-09-10 5 views
1

私はアプリケーションでブリッジパターンを実装しようとしていますが、解決できない問題に直面しています:
私は一般的な '抽象化私はいくつかの器具を持っていたいと思っています。それらをImpA & ImpBと呼んでください。
私はこれを実行します。C#の 'Bridge'パターンの実装について

Abstraction a = new Abstraction(new ImpA); 

ドットの後、私はImpAクラスのパブリックプロパティ/メソッドのリストを見たいと思っていましたが、抽象化自体に入れない限り、私はそれらに到達できません。
抽象化にすべてのメソッドを入れたくないのは、それぞれのインプリメンテーションが独立していて、すべてが1クラスではないからです。
私はここで何が欠けていますか?

答えて

4

抽象クラスのポイントは、あなたのケースでは実装(ImpA)から抽象化することです。これは、Abstractionクラスがクライアントが使用するはずのインターフェイス(メソッド)を定義し、これらの呼び出しを実装上の操作に伝播または「変換」する必要があることを意味します。これはもちろん、あなたのパブリックインターフェイスを構成するメソッドを抽象クラスで実装し、実装に呼び出す必要があることを意味します。

実際の実装クラスを変えたいが、それらのインターフェイスが同じで、すべてがクライアントに公開されるようにするには、単に "ImpA"クラスのパブリックメソッドを記述するインターフェイスを定義し、クライアント。

ここでブリッジパターンの.NETの説明を見つけることができます:http://www.dofactory.com/Patterns/PatternBridge.aspx#_self1

関連する問題