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博客作者木子的昼夜的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. JS中的值传递,模板字面量,数组、对象、传参解构,访问器属性
  2. 【收藏】最全JavaScript中所有的内置对象属性和方法汇总整理
  3. Oracle 中 Object_iD 和 Data_Object_ID 的区别
  4. 【JS基础入门】JavaScript原生Ajax请求与响应处理方式及JSON数据
  5. 【微信公众号】【深入解析】DRM和read-mostly locking
  6. 我所理解的java垃圾回收的自适应技术
  7. Nginx反向代理Tomcat访问时浏览器加载失败,出现 ERR_CONTENT_LENG
  8. java堆栈
  9. 第 81 天:NumPy Ndarray 对象及数据类型

随机推荐

  1. mysql中select列表可以有group列表中没有
  2. 确定SQL UPDATE是否更改了列的值
  3. 当python遇到mysql时,如何顺利安装mysql
  4. 如果没有匹配,则使用默认值执行左连接。
  5. mysql非安装包安装教程
  6. 解决Navicat数据传输问题:The‘InnoDB’f
  7. 如何在codeigniter上的一个提交中插入多
  8. Mysql数据库四大特性、事物的四个隔离、
  9. solr6.3与MySQL结合使用的简明教程(五)——
  10. mysql 判断null 和 空字符串