结构型模式7之1-Proxy代理模式例子理解

来源:互联网 发布:二维码解码器软件 编辑:程序博客网 时间:2024/05/23 01:57

所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

抽象对象角色:租房

public abstract class AbstractObject {    //抽象操作:操作租房    public abstract void operation();}

目标对象角色:租房的人

public class RealObject extends AbstractObject {    @Override    public void operation() {        //租房要做的一些操作        System.out.println("一些操作");    }}

代理对象角色:帮忙租房的中介

public class ProxyObject extends AbstractObject{    RealObject realObject = new RealObject();    @Override    public void operation() {        //调用目标对象之前可以做相关操作        System.out.println("before");                realObject.operation();                //调用目标对象之后可以做相关操作        System.out.println("after");    }}

 客户端

public class Client {    public static void main(String[] args) {        // 代理已经把房租到了,不要个人亲自出马        AbstractObject obj = new ProxyObject();        obj.operation();    }}

===================

例子二:

interface  Network{public void  browse();}class Real implements Network{//真实的上网操作public void browse(){System.out.printlf("上网ing");}}class Proxy implements Network{Network network;public Proxy(Network network){this.network=network;}public void  check(){System.out.printlf("检查用户是否合法");}public void  checkTime(){System.out.printlf("检查时间是否到期");}public void  browseOnline(){check();checkTime();network.browse();//调用真实的方法}}

test

public class ProxyTest{public static void main(String args[]){Network network=new Proxy(new Real());network.browse();}}

结果

检查用户是否合法检查时间是否到期上网ing
0 0