代理模式

来源:互联网 发布:绝地求生n卡优化设置 编辑:程序博客网 时间:2024/06/10 22:24

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

代理模式涉及到了三种角色:抽象主题角色,真实主题角色和代理主题角色

抽象主题角色:声明了真实主题和代理主题的共同接口,这样一来在任何可以使用真是主题的地方都能够使用代理主题

代理主题角色:代理主题角色内部含有对真实主题的引用,从而可以在任何时候操作真实主题对象;代理主题角色提供一个与真实主题角色相同的接口,以便可以在任何时候都可以替代真实主题控制对真实主题的引用,负责在需要的时候创建真实主题对象(和删除真实主题对象);代理角色通常在将客户端调用传递给真实的主题之前或之后,都要执行某个操作,而不是单纯地将调用传递给真实主题对象。

真实主题角色:定义了代理角色所代表地真实对象

 


 

测试代码:

l Subject接口

public interface Subject {

public String request();

}

l TargetSubject类,目标对象

public class TargetSubject implements Subject {

public String request() {

return "该房屋出租3000";

}

}

l ProxySubject类,代理对象

public class ProxySubject implements Subject {

//有代理来访问目标对象

public String request() {

Subject subject = new TargetSubject();

//修改对目标对象的某些业务逻辑

String str = subject.request();

return str.replace("3000""4000");

}

}

l 测试类App.java

public class App {

public static void main(String[] args) {

//直接访问目标对象

//Subject subject = new TargetSubject();

//String str = subject.request();

//System.out.println("str:"+str);

//访问代理对象

Subject subject = new ProxySubject();

String str = subject.request();

System.out.println("str:"+str);

}

}

0 0