今天看设计模式,代理模式说可以做个图片代理解决图片太大,图片显示慢的问题?? 请问具体是怎么实现的??
假设是html页面上显示图片,如果你直接在页面上显示图片的话,是用<img src=""这样的标签来实现。那这样加载时间就要等待很久。通过代理模式比如说html本身先不加载,把加载图片的任务交给代理,Javascript来做。
function imgLoadProxy(src){
var img = new Image();
img.src=src;
...
//通过dom操作添加到页面上
}
然后html页面上就不直接写img标签了。页面加载完毕后,再执行js。
window.onload=function(){
imgLoadProxy('aaaa.jpg');
}
package proxy;
//代理的目的是在达到目的之前可以做一些事情
class ImagProxy {// 代理
IImage id;
public ImagProxy(IImage id) {
this.id = id;
}
public void displayImag() {
System.out.println("显示缩略图片");
}
public void mousePress() {// 点击缩略图片
id.displayImag();
}
}
interface IImage {// 面向接口编程,目的是降低代理与实际类之间的偶合
public void displayImag();
}
class ImagDisplay implements IImage {// 实际工作类
public void displayImag() {
System.out.println("显示正常图片");// 非常消耗内存
}
}
public class Proxy {
public static void main(String[] args) {
ImagProxy proxy = new ImagProxy(new ImagDisplay());// 可以注入
proxy.displayImag();// 客户端感觉只是和代理
proxy.mousePress();// 想看实际图片
}
}