您现在的位置是:主页 > news > 容桂网站建设原创/谷歌浏览器官网下载
容桂网站建设原创/谷歌浏览器官网下载
admin2025/5/6 6:59:34【news】
简介容桂网站建设原创,谷歌浏览器官网下载,承德建站公司,wordpress友情链接页面什么是代理模式 代理模式:代理模式又叫委托模式,是为某个对象提供一个代理对象,并且由代理对象控制对原对象的访问。代理模式通俗来讲就是我们生活中常见的中介。 代理模式可以提供非常好的访问控制,应用比较广泛。 举个例子来说…
什么是代理模式
代理模式:代理模式又叫委托模式,是为某个对象提供一个代理对象,并且由代理对象控制对原对象的访问。代理模式通俗来讲就是我们生活中常见的中介。
代理模式可以提供非常好的访问控制,应用比较广泛。
举个例子来说明:房东要出租房子,我要租房子,但是我找不到好的房源,我就找房屋中介,房屋中介帮我找到好的房源,让我成功租到房子。
优点
职责清晰
具体角色是实现具体的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件事务,代码清晰。在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。
高扩展性
具体主题角色随时会发生变化,但是只要实现了接口,接口不变,代理类就可以不做任何修改继续使用,符合“开闭原则”。
另外,代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需要修改代理类而不需要再修改委托类,同样符合开闭原则。
智能化待完善
动态代理的智能化
中介隔离作用
在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。
开闭原则
增加功能:代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需要修改代理类而不需要再修改委托类,符合代码设计的开闭原则。代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后对返回结果的处理等。代理类本身并不真正实现服务,而是同过调用委托类的相关方法,来提供特定的服务。真正的业务功能还是由委托类来实现,但是可以在业务功能执行的前后加入一些公共的服务。例如我们想给项目加入缓存、日志这些功能,我们就可以使用代理类来完成,而没必要打开已经封装好的委托类。
代码实现
出租接口
/*** @description: 出租* @Author MRyan* @Date 2020/6/15 21:48* @Version 1.0*/
public interface Rent {void rent();
}
房东
/*** @description: 房东* @Author MRyan* @Date 2020/6/15 21:50* @Version 1.0*/
public class Landloader implements Rent {@Overridepublic void rent() {System.out.println("房东要出租房子");}
}
代理:
/*** @description: 代理* @Author MRyan* @Date 2020/6/15 21:49* @Version 1.0*/
public class Proxy {private Landloader landloader;public Proxy(Landloader landloader) {this.landloader = landloader;}public Proxy() {}public void rent() {landloader.rent();investigate();charge();contract();}public void investigate() {System.out.println("中介考察房子");}public void contract() {System.out.println("签订合同");}public void charge() {System.out.println("中介收费");}}
测试:
/*** @description: 单元测试* @Author MRyan* @Date 2020/6/15 21:47* @Version 1.0*/
public class MainTest {@Testpublic void main() {Landloader landloader = new Landloader();Proxy proxy = new Proxy(landloader);proxy.rent();}
}
输出:
房东要出租房子
中介考察房子
中介收费
签订合同