代理模式基础篇

来源:互联网 发布:象过河软件客服 编辑:程序博客网 时间:2024/06/08 05:57

代理模式

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");//客户端也可以通过代理访问真实对象,而代理可以/在访问的过程中多做一些操作

}

}

原创粉丝点击