7.代理模式
16lz
2021-04-11
package proxyPattern;import sun.net.www.content.image.gif;/** * 普通实现方式 * * 场景: tom 认识 dany dany认识莉莉 但是tom不认识莉莉 但是 但是 tom想追莉莉 就想送莉莉礼物 * * @author LiMing E-mail:1151143484@qq.com * @date 2017年6月11日 下午7:44:03 */public class Commonly {public static void main(String[] args) { Girl girl = new Girl("莉莉"); Pursuit tom = new Pursuit(girl); //这里是有问题的 tom不认识莉莉 不能直接接触的 //送玫瑰 tom.giveRose(); //}}// 帅哥class Pursuit {Girl girl;public Pursuit(Girl girl) {this.girl = girl;}public void giveRose(){System.out.println("送 "+girl.name+" 玫瑰");}public void giveLollipop(){System.out.println("送 "+girl.name+" 棒棒糖");}}// 菇凉class Girl {String name;public Girl() {}public Girl(String name) {this.name = name;}}
package proxyPattern;/** * 代理模式 代理模式:为其他对象提供一种代理以控制对这个对象的访问 * * * 远程代理: * 为了一个对象在不同的地址空间提供局部代表 。 这样可以隐藏一个对象存在于不同地址空间的事实 (webService ) * 远程代理为一个位于不同的地址空间的对象提供一个局域代表对象,这个不同的地址空间可以是在本机器中, * 也可以是在另一台机器中,远程代理还有个酷炫的名字:大使。 * 本地应用-》本地代理-》服务端代理-》远程服务 * * 虚拟代理: * 根据需要创建开销很大的对象。通过她来存放实例化需要很长时间的真是对象(比如网页加载图片的时候用一个对象存储图片的地址和名称 但是不及时加载图片) * * 安全代理: * 用来控制真是对象访问时的权限 (对象的访问权限不同) * * 智能代理: * 智能指引 是指当调用真实的对象时 代理处理另外一些事 * * 其他xx代理 欢迎补充 和指正 * @author LiMing E-mail:1151143484@qq.com * @date 2017年6月11日 下午7:43:35 */public class ProxyPattern {public static void main(String[] args) {Girls girls = new Girls("莉莉");//tomPursuits pursuits = new Pursuits(girls);//danyProxy proxy = new Proxy(pursuits);//送棒棒糖proxy.giveLollipops();}}// 送礼物接口interface IGiveGift {abstract public void giveRoses();abstract public void giveLollipops();}class Pursuits implements IGiveGift {Girls girls;public Pursuits(Girls girls) {this.girls = girls;}public void giveRoses() {System.out.println("送 " + girls.name + " 玫瑰");}public void giveLollipops() {System.out.println("送 " + girls.name + " 棒棒糖");}}// 代理类class Proxy implements IGiveGift {Pursuits pursuits;public Proxy() {}public Proxy(Pursuits pursuits) {this.pursuits = pursuits;}public void giveRoses() {pursuits.giveRoses();}public void giveLollipops() {pursuits.giveLollipops();}}// 菇凉class Girls {String name;public Girls() {}public Girls(String name) {this.name = name;}}
©著作权归作者所有:来自51CTO博客作者木子的昼夜的原创作品,如需转载,请注明出处,否则将追究法律责任
更多相关文章
- JS中的值传递,模板字面量,数组、对象、传参解构,访问器属性
- 【收藏】最全JavaScript中所有的内置对象属性和方法汇总整理
- Oracle 中 Object_iD 和 Data_Object_ID 的区别
- 【JS基础入门】JavaScript原生Ajax请求与响应处理方式及JSON数据
- 【微信公众号】【深入解析】DRM和read-mostly locking
- 我所理解的java垃圾回收的自适应技术
- Nginx反向代理Tomcat访问时浏览器加载失败,出现 ERR_CONTENT_LENG
- java堆栈
- 第 81 天:NumPy Ndarray 对象及数据类型