javascript设计模式三两句

1.单体模式:将功能相关的变量或函数封装在一个静态对象中,相当于命名空间,可以减少全局变量的数量,主要是用来处理变量的问题
2.工厂模式:将一个功能封装成一个静态类,无需实例化这个类来调用,而是通过类的一个方法初始化,或者这个类主要用来派生子类,主要用来处理某一个功能的不同操作
3.桥梁模式:在撰写一个程序过程中按照接口直接写某个功能的调用,传入对应的配置参数,此时不用考虑该功能的具体实现,具体实现可以写在其他模块或函数中,但是其提供的接口应该符合一定的规范,在这个规范指引下,过程代码和功能代码分开,通过接口作为桥梁无缝对接
4.装饰者模式:在不改变原始对象的前提下,扩展这个对象。在扩展方法中可能调用原始对象已有的属性,但不能在原始方法中添加新属性来满足扩展的方法
5.组合模式:将一堆相似的对象组合在一起成为一个大的对象,由这个大对象提供接口,通过这些接口再掉内部的对象的接口来实现对应功能
6.门面模式:将复杂的逻辑封装起来,只暴露一个入口给使用者,主要是为了解决差异(兼容性)问题。比如一些内部处理兼容性的方法,它们的内部肯定有很多判断,但是在外部调用的时候,根本不考虑这些兼容性问题,而是根据功能实现的需要来调用。这一点有点像“桥梁模式”,但是桥梁模式更加注重的是功能和接口,而门面模式更加注重逻辑和暴露一个入口。
7.配置器模式:将一个类的接口转换为用户希望的另外一个接口。主要解决类的接口兼容性问题。这个用于转换的函数或方法被称为适配器。从结果来看,它有点像门面模式,都是在解决兼容性问题。
8.享元模式:把功能一拆再拆,拆到最细,再通过接口、工厂、存储器等组装起来。主要解决的是小粒度相同功能的复用。不过一般情况下,这会使程序的可读性降低,但性能会有所提高。
9.代理模式:通过创建一个方法来控制是否执行某些操作。特别是在实例化的时候,如果通过代理模式,就可以在特定条件下才实例化类,否则就返回一些提示信息。这样可以节省内存。
10.观察者模式:定义对象间的一对多依赖关系,当对象的状态发生变化时,依赖它的对象也会跟着更新。事件监听就是一种内置的观察者。
11.命令模式:将请求封装成一个对象,当要执行某些操作时,通过调用这个对象的“执行操作”,传入“要干什么”“参数”,在其内部来处理具体调用那个类的什么方法。它跟门面模式也有点像,但它更强调的是封装出来的这个对象的形式是命令的形式。
12.职责链模式:将一堆处理请求的对象处理成一个链条,当一个请求发生时,传入链条的第一个对象,链条中的对象对传进的请求有两个选择,要么处理它,要么不处理它,要么往链条中的下一个对象传,要么结束处理返回结果。
参考文献:
https://natee.gitbooks.io/javascript-design-patterns/content/index.html

2017-02-15 |