设计模式学习笔记——代理模式
?
代理模式ProxyPattern
给某一个对象提供一个代理对象,并由代理对象控制原对象的引用。
?
代理模式的组成角色:
抽象主题角色Subject:生命了真实主题和代理主题的共同接口
代理主题角色ProxySubject:内部含有真实主题的引用,可以在任何时候操作真实主体对象,添加额外操作,对真是对象进行封装
真实主题角色RealSubject:具体需要的逻辑实现
搜了张类图来看下三者关系
代理主题不改变真实主题的接口,让客户端感觉不到代理的存在,只起到一个传递作用。
?
代理模式有很多种类,包括:
远程代理,虚拟代理,保护代理,Cache代理,防火墙代理,智能引用代理等等等等 他们各有各得特点
例如保护代理提供额外的一个权限控制,只能引用代理可额外提供计数等操作,虚拟代理提供了创建大资源消耗对象时的一种解决方案等。
?
首先看一个最简单的例子,来了解Proxy的工作原理
首先是Subject,已经成为惯例的抽象接口
?
public Object getByArray(Object array, int index) {return Array.get(array, index);}?
其他的参考源:
http://www.iteye.com/topic/517835
http://www.blogjava.net/baoyaer/articles/84080.html