在程序开发中,许多时候都并不希望某个类天生就非常庞大,一次性包含许多职责。那么我们就可以使用装饰者模式。装饰者模式可以动态地给某个对象添加一些额外的职责,而不会影响从这个类中派生的其他对象。 装饰者模式能够在不改变对象自身的基础上,在程序运行期间给对象动态地添加职责。 一、模拟传统面向对象语言的装饰 ...
分类:
编程语言 时间:
2016-12-07 16:28:42
阅读次数:
188
迭代器模式:指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也可以按顺序访问其中的每个元素。 流行语言如Java、Ruby 等都已经有了内置的迭代器实现,许多浏览器也支持 ...
分类:
编程语言 时间:
2016-12-02 19:01:20
阅读次数:
238
享元(flyweight)模式是一种用于性能优化的模式,“fly”在这里是苍蝇的意思,意为蝇量级。享元模式的核心是运用共享技术来有效支持大量细粒度的对象。 如果系统中因为创建了大量类似的对象而导致内存占用过高,享元模式就非常有用了。在JavaScript 中,浏览器特别是移动端的浏览器分配的内存并不 ...
分类:
编程语言 时间:
2016-11-23 12:15:00
阅读次数:
207
代理模式:是为一个对象提供一个代用品或占位符,以便控制对它的访问。 代理模式的关键是,当客户不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问,客户实际上访问的是替身对象。替身对象对请求做出一些处理之后,再把请求转交给本体对象。基本可以理解为粉丝(客户),经纪人(代理 ...
分类:
编程语言 时间:
2016-11-22 13:00:53
阅读次数:
267
策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 我的理解就是把各种方法封装成函数,同时存在一个可以调用这些方法的公共函数。这样做的好处是可以消化掉内部的分支判断,使代码效率更高。 使用策略模式计算奖金 现在要实现这样一个东西,年终奖是根据员工的工资基数和年底绩效情况来发放 ...
分类:
编程语言 时间:
2016-11-21 19:40:29
阅读次数:
156
一、模板方法模式的定义和组成 模板方法模式是一种只需使用继承就可以实现的非常简单的模式。 模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。通常在抽象父类中封装了子类的算法框架,包括实现一些公共方法以及封装子类中所有方法的执行顺序。子类通过继承这个抽象类,也继承了整个算法结 ...
分类:
编程语言 时间:
2016-11-18 21:43:03
阅读次数:
240
自己对JavaScript的原型,继承,闭包,多少也还是了解些,但是平时写的东西都挺简单的,也用不上,所以感觉提升不大。于是乎买了一本《JavaScript设计模式》来提高下自己,这本是百度写的,不是国外的那本,看了第一章,哇靠。。。写的真好,带入感真的强,看小说的朋友应该都懂。 平时也都会看一些别 ...
分类:
编程语言 时间:
2016-11-15 07:49:22
阅读次数:
177
迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也可以按顺序访问其中的每个元素。 一、内部迭代器和外部迭代器 1. 内部迭代器 内部迭代器函数的内部已经定义好了 ...
分类:
编程语言 时间:
2016-11-14 20:45:37
阅读次数:
157
定义 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 具体来说,就是保证有些对象有且只有一个,比如线程池、全局缓存、浏览器中的window 对象等。在js中单例模式用途很广,比如登录悬浮窗,我希望无论我点击多少次这个浮窗都只会被创建一次,这里就可以用单例模式。 1.实现单例模式 思 ...
分类:
编程语言 时间:
2016-11-14 19:38:10
阅读次数:
219
《Practical Common Lisp》的作者 Peter Seibel 曾说,如果你需要一种模式,那一定是哪里出了问题。他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通用的解决方案。 不管是弱类型或强类型,静态或动态语言,命令式或说明式语言、每种语言都有天生的优缺点。一个牙买加运 ...
分类:
编程语言 时间:
2016-11-13 16:21:31
阅读次数:
254