1.什么是设计模式?

设计模式:在软件设计过程中常用的代码规范,针对特定的场景

2.应用场景:

麦当劳点餐  观察者模式   规定的代码格式

花店送花  :代理模式

真实对象(男同学)-----代理对象(花店人员)----用户(女同学)

 //声明女孩对象(用户)
 var girl = function(name){
   this.name = name;
   console.log(this);
 }
//声明男同学(真实对象)
var boy = function(girl){
//女同学
this.girl = girl;
//送花 行为
this.sendCift = function(gift){
console.log("hi"+this.girl.name+",送你一个礼物"+gift);//hi小芳,送你一个礼物999朵玫瑰
}
} //代理对象 花店员工(代理对象)
var ProxyObj = function(girl){
this.girl = girl;//需要知道女孩信息
this.sendCift = function(gift){
(new boy(this.girl)).sendCift(gift);//替人送花
}
}
//调用
var girl = new girl("小芳");
var proxy = new ProxyObj(girl);
proxy.sendCift("999朵玫瑰")

图片懒加载 :代理模式

真实图片(较大,加载慢)---代理图片(较小,加载快)---浏览器

window.onload = function(){
var myImage = (function(){ //自执行函数
var imgNode = document.createElement("img"); //创建图片节点
document.body.appendChild(imgNode); //把创建的图片加入到body
var img = new Image(); //代理对象,先展示等待图片 接着负责拉取真实图片
img.onload = function(){ //当真实图片加载完毕后触发
setTimeout(()=>{
imgNode.src = this.src; //最后 将用真实图片把展示的等待图片替换
},2000)
}
return { //返回一个对象 myImage
setSrc:function(src){
    //先展示等待的图片 小图片
    imgNode.src = "http://img.lanrentuku.com/img/allimg/1212/5-121204193R0.gif";
img.src = src; //把真实图片给代理对象
}
}
})()
//把真实图片给到myImage对象
myImage.setSrc("https://www.baidu.com/img/bd_logo1.png") //真实图片地址
}
使用代理模式重构图片懒加载
//真实对象
var myImage = (function(){
var imgNode = document.createElement("img"); //创建图片节点
document.body.appendChild(imgNode); //把创建的图片加入到body
return {
//返回一个对象 myImage
setSrc:function(src){
imgNode.src = src;
}
}
})()

//代理对象
var ProxyImage = (function(){
var img = new Image();
img.onload = function(){
setTimeout(()=>{
myImage.setSrc(this.src); //最后 将用真实图片把展示的等待图片替换
},2000)
}
return {
//返回一个对象 myImage
setSrc:function(src){
//先展示等待的图片 小图片
myImage.setSrc("http://img.lanrentuku.com/img/allimg/1212/5-121204193R0.gif");
mg.src = src;
}
}
})();
//用户
ProxyImage.setSrc("https://www.baidu.com/img/bd_logo1.png")

js设计模式-代理模式的更多相关文章

  1. js 设计模式——代理模式

    代理模式 代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问. 生活中有很多的代理模式的场景.例如,明星有经纪人作为代理,老板有秘书作为代理等等,当有事情的时候,会找到经纪人或秘书,再由他 ...

  2. 9. 星际争霸之php设计模式--代理模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  3. C++设计模式——代理模式

    前言 青春总是那样,逝去了才开始回味:大学生活也是在不经意间就溜走了,现在上班的时候,偶尔还会怀念大学时,大家在一起玩游戏的时光.大学喜欢玩游戏,但是可悲的校园网,速度能把人逼疯了:还好,后来搞了一个 ...

  4. PHP设计模式-代理模式

    概念理解: 代理模式,是对简单处理程序(或指针)的增强,用于引用一个对象:这个指针被代理对象取代,代理对象位于客户端和真实程序之间,指针有一个可被多个目标利用的钩子. 参与者: client(参与者) ...

  5. Java设计模式-代理模式之动态代理(附源代码分析)

    Java设计模式-代理模式之动态代理(附源代码分析) 动态代理概念及类图 上一篇中介绍了静态代理,动态代理跟静态代理一个最大的差别就是:动态代理是在执行时刻动态的创建出代理类及其对象. 上篇中的静态代 ...

  6. 浅谈Python设计模式 - 代理模式

    声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 一.在某些应用中,我们想要在访问某个对象之前执行一个或者多个重要的操作,例如,访 ...

  7. Java 之 设计模式——代理模式

    设计模式——代理模式 一.概述 1.代理模式 (1)真实对象:被代理的对象 (2)代理对象:代理真实对象的 (3)代理模式:代理对象代理真实对象,达到增强真实对象功能的目的 二.实现方式 1.静态代理 ...

  8. [Head First设计模式]抢票中的设计模式——代理模式

    系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...

  9. JAVA 设计模式 代理模式

    用途 代理模式 (Proxy) 为其他对象提供一种代理以控制对这个对象的访问. 代理模式是一种结构型模式. 结构

随机推荐

  1. MySQL 安装与基本概念

    Mysql版本 第一条产品线:5.0.xx及升级到5.1.xx的产品系列,这条产品线继续完善与改进其用户体验和性能,同时增加新功能,这条路线可以说是MySQL早期产品的延续系列,这一系列的产品发布情况 ...

  2. 启动Activity的单独事件方法2

    1.Button中创建android:onClick="sendmessage" sendmessage方法名 //MAIN_acitivity创建这个同名独立方法 响应Butto ...

  3. C++二叉树前中后序遍历(递归&非递归)统一代码格式

    统一下二叉树的代码格式,递归和非递归都统一格式,方便记忆管理. 三种递归格式: 前序遍历: void PreOrder(TreeNode* root, vector<int>&pa ...

  4. Task扩展方法取消操作

    /// <summary> /// 任务扩展,传入取消操作 /// </summary> public static class TaskExtensionDemo { //因 ...

  5. Python学习 第一天(一)初始python

    1.python的前世今生 想要充分的了解一个人,无外乎首先充分了解他的过去和现在:咱们学习语言也是一样的套路 1.1 python的历史 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈp ...

  6. GIT和SVN的区别(面试)

    Cit是分布式,而SVN不是分布式 存储内容的时候,Git按元数据方式存储,而SVN是按文件 Git没有一个全局版本号,SVN有,目前为止这是SVN相比Git缺少的最大的一个特征 Git的内容完整性要 ...

  7. pip install --upgrade pip

    pip install --upgrade pip python库中urllib3 (1.24.3) or chardet (2.2.1) 的版本不兼容 解决如下: # pip uninstall u ...

  8. Linux( Ubantu ) 的简单使用

    1.Linux常用的快捷键 Ctrl + Alt+ T --打开终端 Ctrl + Shift + C --复制 Ctrl + Shift + V --粘贴 Ctrl + Shift + A --光标 ...

  9. Java之ExceptionHelper工具类

    import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.e ...

  10. Web前端开发——HTML文件结构

    在编写html文件时,把文件保存成 .htm 或 .html的后缀. 基本文件结构 <html> <head> <title></title> < ...