代理模式是对象的结构模式。代理模式给一个对象提供了一个代理对象,并由代理对象控制对象的引用。
所谓代理,就是一个人或一个机构代表另一个人或机构采取行动。
代理模式在设计模式中的定义就是:为其他对象提供一种代理以控制对这个对象的访问。说白了就是,在一些情况下客户不想或者不能直接引用一个对象,而代理对象可以在客户和目标对象之间起到中介作用,去掉客户不能看到的内容和服务或者增添客户需要的额外服务。
使用代理的显著好处是,系统提供了向真实主题传递客户请求的控制。代理主题可以在向真实主题传递客户请求之前执行特定的操作,并决定是否将请求传递给真实主题;代理主题可以在向真实主题传递请求后执行另外的一些操作。
代理模式中的“代理商”要想实现代理任务,就必须和被代理的“厂商”使用共同的接口(你可以想象为产品)。所以自然而然你会想到在java中使用一个抽象类或者接口(推荐)来实现这个共同的接口。于是代理模式就有三个角色组成了:
1.抽象主题角色:声明了真实主题和代理主题的共同接口。
2.代理主题角色:内部包含对真实主题的引用,并且提供和真实主题角色相同的接口。
3.真实主题角色:定义真实的对象。
例子如下,有人要卖房子,可是他不清楚房子的价格,也不知道到哪找买家,于是他找了家房产中介(代理)来帮助他卖房。
Subject.java
package Proxy;
abstract public class Subject {
abstract public void SellHouse();
}
卖房者RealSubject.java
package Proxy;
//卖房者卖房
public class RealSubject extends Subject {
public void SellHouse() {
System.out.println("-------------卖房者卖房-------------");
}
}
房产中介ProxySubject.java
package Proxy;
//房产中介
public class ProxySubject extends Subject {
private RealSubject realSubject;
public void SellHouse() {
/*
if (realSubject == null) {
realSubject = new RealSubject();
}
realSubject.SellHouse();
*/
System.out.println("-------------房产中介帮助房子定价-------------");
System.out.println("-------------房产中介帮助寻找客户-------------");
System.out.println("-------------房产中介帮助卖房-------------");
}
}
测试代码Client.java
package Proxy;
public class Client {
public static void main(String[] args) {
// 卖房者(Subject)卖房时找中介(Subject)
Subject subject = new ProxySubject();
subject.SellHouse();
}
}
分享到:
相关推荐
代理模式(Proxy) 定义: 为其他对象提供一种代理以控制对这个对象的访问 结构: 由三部分组成 1.RealSubject(真实对象): 真正会调用到的对象 2.Proxy(代理对象): 代理真实对象的地方 3.Subject(共同点): 代理对象...
JAVA设计模式之代理模式实例
代理模式.ppt代理模式.ppt代理模式.ppt
本程序是一个代理模式的小例子。程序比较简单。
设计模式-代理模式(讲解及其实现代码)
深信服网闸代理模式配置教程
//代理模式内部引用了真实角色 public void requst() { this.preRequest(); //在真实角色操作之前所附加的操作 if(null == realsubject) { realsubject = new ReallSubject(); } realsubject.requst(); // ...
设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式
代理模式代理模式代理模式
自己总结的代理模式和Java中的动态代理模式,有源码
代理模式: 为其他对象提供一种代理以控制对这个对象的访问。 代理模式的主要作用是,用来控制真实对象的访问权限,也就是完全对外隐藏真实对象。以及在调用真实对象时,代理还可以额外的处理另外的事。 比如下面...
代理模式的小demo
自己写的一个代理模式的示例,供大家参考 自己写的一个代理模式的示例,供大家参考 自己写的一个代理模式的示例,供大家参考
用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明
Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)
该资源提供了三种代理模式的使用代码,其中包含每种模式的jar包、具体代码、Demo测试类,详细的注释帮助你来理解。
设计模式C++学习之代理模式(Proxy)
.net实现设计模式之代理模式