アダプターのクラスについてはほとんど疑いがありません。私はアダプタクラスの目標を知っています。そしていつ使うべきか。私の疑問は、クラスの建設についてです。私はいくつかのチュートリアルをチェックして、それらのすべては私が "アダプター"への依存として "Adaptee"クラスを渡すべきだと言います。例: アダプターのパターンと依存性
Class SampleAdapter implements MyInterface
{
private AdapteeClass mInstance;
public SampleAdapter(AdapteeClass instance)
{
mInstance=instance;
}
}
この例は、wikipediaからコピーされています。ご覧のように、AdapteeClassは私のオブジェクトに依存として渡されます。問題はなぜですか?オブジェクトのインタフェースを変更している場合は、「新しい」インタフェースを使用することは明らかです。古いインタフェースは必要ありません。なぜ私のアダプタの外に "古い"クラスのインスタンスを作成する必要があります。誰かが私が必要とするものを渡すことができるように依存性注入を使うべきだと言うかもしれませんが、これはアダプターです - 具体的なクラスのインターフェースを変更する必要があります。個人的に私は、コードがより良いと思う。
Class SampleAdapter implements MyInterface
{
private AdapteeClass mInstance;
public SampleAdapter()
{
mInstance= new AdapteeClass();
}
}
あなたの意見は?
私はあなたがデコレータを探していると思います... – dotnetstep
@dotnetstepいいえ、彼が指しているアダプタパターンはデコレータとは異なります。デコレータはインターフェイスを同じに保ちますが、動作を拡張します。アダプタは、予想されるインターフェイスと一致するように既存のクラスのインターフェイスを再作成します。詳細については、http://stackoverflow.com/questions/350404/how-do-the-proxy-decorator-adaptor-and-bridge-patterns-differを確認してください。 –