清姿
IN A GOOD WAY
摘要: 代码复用有一个著名的原则,是GoF提出的:优先使用对象组合,而不是类继承。在javascript中,并没有类的概念,所以代码的复用,也并不局限于类式继承。javascript中创建对象的方法很多,有构造函数,可以使用new创建对象,并且可以动态的修改对象。javascript的非类式继承(可称为现代... 阅读全文
posted @ 2015-01-27 20:18 清姿 阅读(1703) 评论(2) 推荐(0) 编辑
摘要: 观察者模式定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。UML示意图:其中的角色: Subject:主题角色把所有对观察考对象保存在一个对象里,每个主题都可以有任何数量的观察者。主题可以增加和删除观察者对象... 阅读全文
posted @ 2015-01-26 20:19 清姿 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 享元模式采用一个共享来有效的支持大量细小粒度的对象,避免大量有相同内容的类的开销(如内存耗费),共享一个元类。应用场景:页面存在大量的资源密集型对象;他们具备一些共性,可以分离出公共操作的数据。一个例子,汽车登记: var Car = function(make,model,year,owne... 阅读全文
posted @ 2015-01-26 19:04 清姿 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 装饰模式:在不改变原类(对象)和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象。在设计原则中,有一条,多用组合,少用继承,装饰模式正是这一原则的体现。UML示意图:假设自行车商店有4种自行车卖:var ABicycle = function(){ ... }... 阅读全文
posted @ 2015-01-22 20:14 清姿 阅读(606) 评论(0) 推荐(1) 编辑
摘要: 适配器模式的主要作用是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些对象(类)可以一起工作。UML示意图:例如,鸭子有fly方法和quack(嘎嘎叫)方法,火鸡也有fly方法和gobble(咯咯叫)方法,如果希望火鸡有quack方法,可以复用鸭子的,... 阅读全文
posted @ 2015-01-22 19:20 清姿 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 也可译为门面模式。它为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。引入外观角色之后,使用者只需要直接与外观角色交互,使用者与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。 比如在家要看电影,需要打开音响,再打开投影... 阅读全文
posted @ 2015-01-20 19:06 清姿 阅读(1943) 评论(0) 推荐(1) 编辑
摘要: javascript创建对象的方法有很多种,一般来说,推荐使用对象字面量来创建对象。对象构造函数捕捉使用new Object来创建对象,可能会带来一些问题:var o = new Object();console.log(o.constructor === Object);//truevar o =... 阅读全文
posted @ 2015-01-19 19:51 清姿 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 组合模式所要解决的问题:可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象。客户端代码必须区别对象简单对象和容器对象,而实际上大多数情况下用户认为它们是一样的。对这些类区别使用,使得程序更加复杂。递归使用的时候跟... 阅读全文
posted @ 2015-01-19 19:09 清姿 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 看以下代码: var bind = Function.prototype.call.bind(Function.prototype.bind); 第一眼看上去,我能猜出它究竟是用来做什么的。它把x.y(z)转化成了y(x,z)。编写良好的代码会比较容易被读懂。在读完Functional Javasc... 阅读全文
posted @ 2015-01-16 13:36 清姿 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 在系统中,某些类由于自身逻辑,具有两个或两个以上维度的变化,如何使得该类型可以沿多个方向变化,但又不引入额外的复杂度,这就是桥接模式要解决的问题。 定义:桥接模式(Bridge),将抽象部分与它的实现部分分离,使他们可以独立的变化。 意图:将抽象与实现解耦。 对于前端,比较常用的场景,是事件监控:... 阅读全文
posted @ 2015-01-15 19:11 清姿 阅读(386) 评论(0) 推荐(0) 编辑