中介者对象践行了最少知识原则,指一个对象尽可能少的了解别的对象,从而尽量减少对象间耦合程度。这样各个对象只需关注自身实现逻辑,对象间的交互关系交由中介者对象来实现和维护。需求背景:手机购买页面,在购买流程中,可以选择手机的颜色及输入购买数量...
-
javascript设计模式九:中介者模式
-
javascript设计模式六:发布-订阅模式(观察者模式)
发布-订阅模式也叫观察者模式,是js开发中应用广泛的一种模式。下面将列举一个通用发布订阅模式的示例,应用到闭包、this、apply/call、自执行函数等概念,起码达到熟悉的程度,才能说把发布-订阅模式真正吃透并能灵活运用到实际场景中去。常见的发布订阅模式...
-
javascript设计模式八:职责链模式
职责链的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象能处理它为止,传递链中的这些对象就叫节点。需求背景: 一个电商网站,用户交500定金且定金已付时,...
-
javascript设计模式七:模板方法模式
模板方法模式,是一种典型的通过封装变化提高系统扩展性的设计模式。在传统的面向对象语言中,一个运用了模板方法模式的程序中,子类的方法种类和执行顺序都是基本不变的,所以把这部分逻辑抽象到父类的模板方法中。而子类的方法具体怎么实现则是可变的,于是...
-
javascript设计模式五: 原型模式
在javascript语言中,原型与原型链是一个非常重要的概念,因为它们是javascript语言得以成立的根本。因为javascript是基于原型的面向对象编程语言,这有别于基于类的java、python等面向对象编程语言。虽然javscript现在也有了class,但它骨子里还是个基于原型...
-
javascript设计模式四:迭代器模式
迭代器模式分为内部迭代器和外部迭代器,内部迭代器就是在函数内部定义好迭代的规则,它完全接手整个迭代的过程,外部只需一次初始调用。内部迭代器以下自行实现的类似jquery中$.each()的each()函数就是内部迭代器//实现一个jq的$.each()迭代器vararr&n...
-
javascript设计模式三:代理模式
代理模式是一种对程序对象进行控制性访问的一类解决方案。引入代理模式,其实是为了实现单一职责的面向对象设计原则。单一职责其实就是指在一个类中(js中通常指对象和函数等),应仅有一个引起它变化的原因。这样会帮助程序设计具有良好的健壮和高内聚特性,...
-
javascript设计模式二:策略模式
策略模式指定义一系列算法,将它们一个个封装起来。将不变的部分与变化的部分隔开是每个设计模式的主题,策略模式同样如此,策略模式的基础组成: 一个基于策略模式的程序至少要由两部分组成。第一个部分是一组策略类,策略类封装了具体的算法,并负责具体的...
-
javascript设计模式一: 单例模式
单例模式定义: 保证一个类仅有一个实例,并提供一个访问它的全局访问点上代码:标准单例模式//方法1 //标准单例模式 varSingleton=function(name){ this.name=name } Singleton.prototype.getName&nbs...
-
怎么用css属性屏蔽鼠标事件(鼠标点击可穿透上层元素)
起源:前几天测试发来一个需求,内容要求看图:看到这个需求,我有点懵逼。现在的情况是只有点击日期内容框空白区域时,才会响应点击事件显示下拉日期菜单。而这个icon图标我是绝对定位到日期内容框中的,它的图层维度是高于日期内容框的,点击icon图标时是不...