私はプロキシパターンを理解しようとしています。クライアントがプロキシデザインパターンでプロキシオブジェクトを使用するようにする方法
プロキシが実際のオブジェクトと同じインターフェイスを実装する場合、クライアントが実際のオブジェクトではなくプロキシを使用するようにするにはどうすればよいですか?そのため、実際のオブジェクトのインスタンスをインターフェイスの参照に割り当て、メソッドを直接呼び出して、プロキシを迂回させることができます。
おそらく私はそれを得ていません。このパターンは、クライアントがプロキシとだけやり取りすることを保証するために使用されていませんか?
これは私が制御するコードで使用するパターンですか?
EDIT
public final class RealClass implements CommonInterfaceForProxyAndRealClasses {
private String name;
private String name2;
RealClass() {
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public String getName2() {
return name2;
}
public void setName2(final String name2) {
this.name2 = name2;
}
@Override
public String allowedMethodGetName() {
// TODO Auto-generated method stub
return getName() + getName2();
}
}
public class ProxyForRealClasses
implements CommonInterfaceForProxyAndRealClasses {
@Override
public String allowedMethodGetName() {
final RealClass classy = new RealClass();
classy.setName("hello");
classy.setName2("new");
return classy.allowedMethodGetName();
}
}
final CommonInterfaceForProxyAndRealClasses myobje = new ProxyForRealClasses();
System.out.println(myobje.allowedMethodGetName());
// Shouldn't be possible
final CommonInterfaceForProxyAndRealClasses myobje2 = new RealClass();
System.out.println(myobje2.allowedMethodGetName());
実際のオブジェクトが保護作り、プロキシパブリック。 – rossum
問題を示すサンプルコードがありますか – Julian
@Julian私の編集を参照してください。私は今いくつかのコードを提供しました。 – user3813234