• 单例模式

  用于创建唯一的一个对象。

  核心在于一个判断

  var index
  if(index){
  return index;
  }
  init();
  这样只会在第一次的时候初始化创建对象,以后都不会再创建对象。
  还有闭包内的变量不会销毁,例如index可以始终存在。
  js的实现:
  

   var getSingle = function (fn) {
var result;
return function () {
return result || (result = fn.apply(this, arguments));
};
};
//创建登陆div
var createSingletonLoginLayer = getSingle(function () {
var div = document.createElement('div');
div.innerHTML = '我是悬浮窗';
div.style.display = 'none';
document.body.appendChild(div);
return div;
}); document.getElementById('loginBtn').onclick = function () {
var loginLayer = createSingletonLoginLayer();
loginLayer.style.display = 'block';
};
//创建iframe
var createSingleIframe = getSingle(function () {
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
return iframe;
}); document.getElementById('loginBtn2').onclick = function () {
var loginLayer = createSingleIframe();
loginLayer.src = 'http://baidu.com';
};
  • 策略模式

  个人感觉这个模式挺啰嗦的,挺短的几行代码用完这个模式就变得貌似又臭又长,所以可用在验证、以及可以复用的组件等地方。 不能复用真的感觉写这么长一串不值。

  个人感觉这个模式核心在于把条件放在对象中代替用if来代替

  策略模式的目的是将算法的使用与算法的实现分离开来。

  • 代理模式
 
  类似明星有经纪人。
 
  代理可以帮助接收者过滤掉一些条件。
 
  引入代理、多创建一个对象,为了符合对象的单一职责原则。以后需求变更可以不更改原对象情况下将代理去掉。
 
  代理和本体需要显式地实现同一个接口(同样的函数名)
 
  分页可以使用 缓存代理 同一页的数据只从后台请求一次,不用每次都从后台请求。
  var cache = {};
  return function(){
  var args = Array.prototype.join.call(arguments,',');
  if(args in cache){
  return cache[args];
  }
  return cache[args] = mult.apply(this,arguments);
  };
 
 
  我们在编写业务代码的时候,往往不需要去预先猜测是否需要使用代理模式。 当真正发现不方便直接访问某个对象的时候, 再编写代理也不迟。

javascript设计模式阅读后的感悟与总结的更多相关文章

  1. 阅读《JavaScript设计模式》第二章心得

    面向对象编程 面向对象编程就是将你的需求抽象成一个对象.然后针对这个对象分析其特征(属性)与动作(方法).这个对象我们称之为类.面向对象编程思想其中的一个特点就是封装. 1.私有属性.私有方法.特权方 ...

  2. JavaScript设计模式:读书笔记(未完)

    该篇随我读书的进度持续更新阅读书目:<JavaScript设计模式> 2016/3/30 2016/3/31 2016/4/8 2016/3/30: 模式是一种可复用的解决方案,可用于解决 ...

  3. JavaScript设计模式 - 代理模式

    代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问 代理模式的用处(个人理解):为了保障当前对象的单一职责(相对独立性),而需要创建另一个对象来处理调用当前对象之前的一些逻辑以提高代码的效 ...

  4. JavaScript设计模式(一)

    使用JavaScript框架和库过程中, 我遇到过很多感觉上'奇形怪状'的代码. 大多数情况下, 按照惯例编写代码也能够写出很多出色的功能. 但是如果不从根本上理解它们实现的方法, 就没办法完全充分发 ...

  5. 【JavaScript设计模式系列---开篇预览】

    转:http://www.cnblogs.com/Darren_code/archive/2011/08/31/JavascripDesignPatterns.html 2011-08-31 23:5 ...

  6. 再起航,我的学习笔记之JavaScript设计模式11(外观模式)

    经过一段时间的学习与分享,我们对创建型设计模式已经有了一定的认识,未来的一段时间里我们将展开新的篇章,开始迈入结构性设计模式的学习. 结构性设计模式与创建型设计模式不同,结构性设计模式更偏向于关注如何 ...

  7. JavaScript设计模式(3)-工厂模式

    工厂模式 1. 简单工厂 简单工厂:使用一个类或对象封装实例化操作 假如我们有个自行车商店类 BicycleShop,它提供了销售自行车的方法可以选择销售两类自行车 Speedster,Comfort ...

  8. JavaScript设计模式经典-面向对象中六大原则

    作者 | Jeskson来源 | 达达前端小酒馆 1 主要学习JavaScript中的六大原则.那么六大原则还记得是什么了吗?六大原则指:单一职责原则(SRP),开放封闭原则(OCP),里氏替换原则( ...

  9. 从ES6重新认识JavaScript设计模式(三): 建造者模式

    1 什么是建造者模式? 建造者模式(Builder)是将一个复杂对象的构建层与其表示层相互分离,同样的构建过程可采用不同的表示. 建造者模式的特点是分步构建一个复杂的对象,可以用不同组合或顺序建造出不 ...

随机推荐

  1. 【转】LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    用VS2010编译C++项目时出现这样的错误: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 方案一:(这个方法比较好,在用qt运行时出现问题也能解决) 复制 C:\Windows\ ...

  2. 2018-2019-2 网络对抗技术 20165316 Exp5 MSF基础应用

    2018-2019-2 网络对抗技术 20165316 Exp5 MSF基础应用 目录 原理与实践说明 实践原理 实践内容概述 基础问题回答 攻击实例 主动攻击的实践 ms08_067_netapi: ...

  3. redis 在 php 中的应用(key篇)

    本文为我阅读了 redis参考手册 之后结合 博友的博客 编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: KEY(键) DEL           ...

  4. scrapy的splash 的简单使用

    安装Splash(拉取镜像下来)docker pull scrapinghub/splash安装scrapy-splashpip install scrapy-splash启动容器docker run ...

  5. 谷歌浏览器导出excel失败问题解决(网上都没解决)

    java poi导出excel报了网络错误,信息已经写回到chrome浏览器(IE/FF均无此问题).如下所示: 从chrome的network大小部分也可以看出是正确的. 网上很多答案说将file. ...

  6. xampp——apache服务启动问题(端口占用)

    Apache启动提示 20:39:02 [Apache] Error: Apache shutdown unexpectedly.20:39:02 [Apache] This may be due t ...

  7. Gradle构建多模块项目

    通常我在使用Maven构建项目的时候是将应用项目划分为多个更小的模块. Gradle 项目也拥有多于一个组件,我们也将其称之为多项目构建(multi-project build). 我们首先创建一个多 ...

  8. Linux coredump解决流程

    一.打开core文件限制 a.sudo vi /etc/profile b.文件末尾添加ulimit -c unlimited source /etc/profile 把文件重新加载到内存 c.roo ...

  9. 你不知道的JS(3)来聊聊this

    为什么要使用this?什么是this? 来看一段代码 function identify() { return this.name.toUpperCase(); } function speak() ...

  10. wordpress安装教程

    最近安装了wordpress来搭建自己的网站,过程有些艰辛,以防以后转移服务器再次遇到这个难题,在此记下自己的这次安装过程以及一些问题,同时也供遇到相同问题的初次接触者做参考. 另外说明一下我用的操作 ...