一、概述

  概念

  

  UML简图

  

  实际使用的场景示例

  • 如果那个对象是一个是很大的图片,需要花费很长时间才能显示出来,那么当这个图片包含在文档中时,使用编辑器或浏览器打开这个文档,打开文档必须很迅速,不能等待大图片处理完成,这时需要做个图片Proxy来代替真正的图片。
  • 如果那个对象在Internet的某个远端服务器上,直接操作这个对象因为网络速度原因可能比较慢,那我们可以先用Proxy来代替那个对象。

  现实中的例子比如桌面上的快捷方式,我们点击它,它帮我们找到实际应用程序,它就是一个代理了!

  主要角色

  抽象主题角色:代理和真实角色的共同接口,以便于代理

  真实角色

  代理角色

二、实践

  抽象角色:

/**
* 抽象共同接口
*
* @author Administrator
**/
public abstract class Subject {
public abstract void method1();
}

  真实角色:

/**
* 真实角色
*
* @author Administrator
**/
public class RealSubject extends Subject{
@Override
public void method1() {
System.out.println("real subject");
}
}

  代理角色:

/**
* 代理角色
*
* @author Administrator
**/
public class ProxySubject extends Subject{
private Subject subject; public ProxySubject(Subject subject) {
this.subject = subject;
} @Override
public void method1() {
System.out.println("proxy subject");
subject.method1();
}
}

  客户端使用

/**
* 客户端
* @author Administrator
**/
public class Client {
public static void main(String[] args) {
RealSubject realSubject = new RealSubject();
ProxySubject proxySubject = new ProxySubject(realSubject);
proxySubject.method1();
}
}

  // 当然可以根据多态性改变一些定义方式

  

  以上就是我们熟知的静态代理,关于静态代理与动态代理的分析,可以参见之前随笔:http://www.cnblogs.com/jiangbei/p/6828086.html

  

最新文章

  1. 深入理解Java反射
  2. SQL联合查询(内联、左联、右联、全联)的语法(转)
  3. ASP.NET corrupt assembly “Could not load file or assembly App_Web_*
  4. hdu1251 统计难题 字典树
  5. checkboxes(复选按钮)
  6. ICON文件保存
  7. Codeforces Round #339 Div.2 C - Peter and Snow Blower
  8. HTML相对路径 当前目录、上级目录、根目录、下级目录表示法
  9. TOP/ORDER BY 顺序(转)
  10. urllib3 ProxyManager
  11. 安装Loopback网卡/回环网卡
  12. iOS 把图片从Mac本地添加到iOS Simulator中
  13. 【程序员联盟】官网上线啦!coderunity.com
  14. Spring系列(三):Spring IoC中各个注解的理解和使用
  15. Ubuntu16.04安装及配置nginx
  16. Docker系列08—搭建使用私有docker registry
  17. Elasticsearch修改network后启动失败
  18. DLL的晚绑定与早绑定
  19. 这篇文章写的真好-NLP将迎来黄金十年-书摘
  20. Vundle简介安装

热门文章

  1. 475. Heaters (start binary search, appplication for binary search)
  2. 使用combineReducers注意事项
  3. (一)自定义ViewGroup绘制出菜单
  4. UVA151 Power Crisis
  5. linux-资料汇集
  6. 51Nod - 1205 (流水先调度)超级经典的贪心 模板题
  7. DHCP, NAT
  8. 清除IE8/IE9/IE10/IE11浏览器缓存文件 100%有效
  9. 如何搭建私人的ghost博客
  10. oracle导出sequences