代理模式
1.基础篇
1.1简单的静态代理
代理是为了对访问对象提供额外的或者不同的操作,这些操作涉及与“实际”对象的通信,因此代理充当着中间人的角色。简而言之,代理就是一个中介,比如老师,家长和孩子三人之间的关系,老师想和孩子交流,也可以和家长交流,然后由家长转达老师的话和孩子交流,当然喽,家长可以在这其中多做一些操作,比如和孩子交流完可以奖励孩子。而家长就充当了代理的角色,代理的真实对象是孩子。
代理模式的结构图如下
实战练习,代码如下
public interface Interface {
void doSometing();
void sometingElse(Stringarg);
}
public class RealObject implements Interface{
@Override
public void doSometing() {
// TODO Auto-generated method stub
System.out.println("RealObject dosometing!");
}
@Override
public void sometingElse(Stringarg) {
// TODO Auto-generated method stub
System.out.println("RealObject sometingElse='"+arg+"'");
}
}
public class SimpleProxyimplements Interface{
private Interface object;
public SimpleProxy(Interfaceobject){
this.object=object;
}
@Override
public void doSometing() {
// TODO Auto-generated method stub
System.out.println("访问真实对象之前,我先做点事情!");
object.doSometing();
System.out.println("访问真实对象之后,我再做点事情!"); }
@Override
public void sometingElse(Stringarg) {
// TODO Auto-generated method stub
object.sometingElse(arg);
}
//客户端
public static void main(String[]args) {
RealObject ro=new RealObject();
ro.doSometing();
ro.sometingElse("hello");//客户端可以直接访问真实对象
SimpleProxy sp=new SimpleProxy(ro);
sp.doSometing();
sp.sometingElse("nihao");//客户端也可以通过代理访问真实对象,而代理可以/在访问的过程中多做一些操作
}
}