2011-01-20 3 views
1

私は、ラッピングによってより高レベルで、よりフレンドリーで、より合理化されたフレームワークを提供しなければならないAPIを持っています。継承または合成を使用するか、または別のソリューションですか?

このAPIは、アンマネージバージョンと同じラップされています。しかし、それには直感的でないメンバー名やワークフローなど、さまざまな種類があります。

私は、基本的なタイプへの参照を保存するために構図を使用しています。基本的にはオリジナルのC++ APIが重く、継承に基づいて仮想されているので、私は考え始める事がある

public class Effect 
{ 
    public IEffect {get; private set;} 
    ... 
} 

しかし1など、いくつかの他の下位レベルのロジックを使用して、より高いレベルの機能性を有する、プロパティに特定の機能を変換して組み合わせますメソッド、どのように私は "露出" /ラップ/チェーンこれらについて行く必要がありますか?

internalType.VirtualMethod()などを呼び出す追加の方法を提供してください。しかし、これはうまくいかないようですね。

しかし、私はのように自分自身を継承使用している場合一方、:

public class Effect : IEffect 

その後私は、これらすべてのメンバーと奇妙な、obsolote機能がそれで来ています。私はまだ私のより高いレベルの機能を提供することができますが、多くの理由のために、これらのメンバーを表示したくありません。最も単純なものの1つは.NETのようなものではありません。

これを行うにはどうすればよいですか?

答えて

1

ラッパークラスを作成します。長期的には、あなたがうれしく思います。

+0

ありがとうございますが、どういう意味ですか?構図を使う?私はすでにこれをやっているからです。それとも別のことを意味するの? –

+1

私は、ラッパークラスを書くことは継承ではなく合成を意味すると言います。 – stakx

+1

はい、構成。 APIの最良の部分を取り、独自のクラスを開発してください。継承を使用して、不要なパブリックAPIのメソッドやプロパティをすべて公開すると、ダメージを元に戻すことは難しくなります。 –

関連する問題