私が理解したように、AdapterとProxyパターンの両方が2つの異なる/異なるクラスを作成します/ objectsは通信用にそれぞれ互換性があります。そして、両方ともStructuralパターンです。私はそれらの両方が互いにほとんど似ていることを知っています。
正確に何が違うのかを誰かが説明できますか?
編集:私は this 質問を通過しました。しかし、アダプターとプロキシを詳しく比較したいと思います。
アダプター:
UML図:
このSEの投稿で、実際のコード例を使用してこのパターンの詳細を確認できます。
プロキシ:
プロキシは、別のオブジェクトへのアクセスを制御するための代理またはプレースホルダーを提供します。
UML図:
プロキシパターンが適用される一般的な状況があります。
動作するコードについては、プロキシに関する tutorialspoint の記事をご覧ください。
主な違い:
これらのパターンの詳細については、 proxy および adapter の記事のソース作成記事を参照してください。
その他の有用な記事: proxy by dzone
から ここ :
アダプタは、その主題に対して異なるインターフェイスを提供します。プロキシは同じインターフェースを提供します。
アダプタは、直接接続した場合に互換性のない別のものに適合するものと考えることができます。たとえば、海外に旅行するときに、コンセントアダプターが必要な場合。
これで、プロキシは同じインターフェイスのオブジェクトになり、場合によっては同じ基本クラス(またはサブクラス)になります。実際のオブジェクトである(そしてそのように振る舞う)だけで、実際の振る舞い(計算、処理、データアクセスなど)を基になる参照オブジェクトに転送します。
電気的なアナロジーに外挿すると、アダプタの使用がクライアントに表示されても問題ありません。つまり、クライアントはアダプタが使用されていることを「認識」していますが、プロキシの使用はより頻繁に隠されている可能性があります。透過的」-クライアントは実際のオブジェクトが使用されていると考えますが、これはプロキシにすぎません。
アダプタパターンとプロキシパターンの違い
アダプタパターン
プロキシパターン
コードを理解する
class client{
public void main(){
//proxy pattern
IServer iserver = new proxy();
iserver.invoke();
//adapter pattern
IAdapter iadapter = new adapter();
iserver.iadapter();
}
}
class server implements IServer{
public void invoke(){}
}
class proxy implments IServer{
public void invoke(){}
}
class adapter implements IAdapter{
public void invoke(){}
}