Adapter パターンと Decorator パターンのどちらを使用した方がよいのは、どのような場合ですか?
実際のプログラムからの例は大歓迎です。
これらを交互に使用することはできないと思います。
アダプターは、オブジェクトのインターフェースを変更して、別のインターフェースに適合させます。Decorator は、機能を追加しながらインターフェイスを維持します。
public class Foo
{
}
public class Bar
{
}
// adapter takes Foo and pretends it is Bar
public class FooBarAdapter : Bar
{
public FooBarAdapter( Foo foo )
{
}
}
// decorator maintains the interface and adds features
public class FooDecorator : Foo
{
public FooDecorator( Foo foo )
{
}
}
これらの UML ダイアグラム コードとのリンクがあり、説明します
アダプター: http://www.dofactory.com/Patterns/PatternAdapter.aspx
=> 異なるクラスのインターフェースを一致させる
デコレーター: http://www.dofactory.com/Patterns/PatternDecorator.aspx
=>オブジェクトに責任を動的に追加する