1. Proxy:代理模式
1.1. 概述
l 代理概念可以理解为:在出发点到目的地之间有一道中间层,意为代理。例如:代理服务器。
l 场景:有一个图片查看应用,每个图片都很大,载入很消耗资源,我们希望有一个界面上显示的是缩略图片,用户点击缩略图片,能够载入实际的图片,怎样编写这个应用?
l 用代理是一种比较好的办法
1.2. 解决方法:使用代理模式
使用代理模式,代码如写:
//图片代理:显示缩略图片 class ImageProxy{//代理类 private IImage iimage; public ImageProxy(IImage iimage){ this.iimage = iimage; } public void displayImage(){ System.out.println("显示缩略图片"); } public void mousePress(){//鼠标响应,点击缩略图 iimage.displayImage(); } }
interface IImage{ public abstract void displayImage(); } class ImageDisplay implements IImage{//实际工作类 public void displayImage(){ System.out.println("显示实际图片"); //非常消耗资源 } }
public class Proxy1{ public static void main(String args[]){ ImageProxy proxy = new ImageProxy(new ImageDisplay());//可以装配 proxy.displayImage();//客户端调用时感觉只是在和代理打交道 proxy.mousePress();
} } |
1.3. 代理模式小结
l 为其他对象提供一种代理以控制对这个对象的访问,对于开销很大的对象,只有在使用它时才创建,这个原则可以为我们节省很多宝贵的Java内存。
l 一些例子
l 1. 授权机制 不同级别的用户对同一对象拥有不同的访问权利,你可以编写一个代理类来负责检查用户权限决定他们怎样去访问。
l 2. 某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动。
l 如我们前面讲到的例子