文章目录
1.什么是设计模式?
2.js设计模式结构
3.编写设计模式
4.js反模式
5.js设计模式的分类
什么是设计模式?
1.什么是设计模式?
就是一个我们如何解决问题的模板——那些可以再许多不同的情况里使用的模板。
优点:
模式是行之有效的解决方法:提供固定解决方法来解决开发中出现问题
易重用:一个模式通常反映一个可适应自己需要的开箱即用的解决方案
善于表达:一般有一组词汇和优雅的解决方案
2 . js设计模式结构
模式是最初提出的一种在两者之间建立关系的规则:
-
上下文环境(在此环境下产生系统的能力)
-
配置:模式名称 和 相应的描述
-
上下文概述:响应用户需要
-
问题声明: 理解模式意图
-
解决方案: 包括用户出现问题的解决方案
-
设计模式
-
实现: 如何被实现的一种指引
-
例证: 虚拟化表达
-
例子
-
共同条件:是否有其他模式进行支持?
-
关系: 相似之处?
-
已知的使用: 模式在哪里被用到?
-
讨论
3.编写设计模式
模式是否实用?: 确保这个模式能够对一些常见的问题有明确的解决方案,而不是临时的解决方案。
保持最佳实践: 设计需要以最佳实践中所获得的理解作为基础。
设计模式对用户来说应该是清晰的:设计模式必须对任何形式的用户体验都是清晰的。 因为设计模式主要服务于开发者们,所以不能强迫他们去改变原来的行为,那样开发者们才会去使用这个模式。
需要有几个有说服力的例子:一个好的设计模式需要有一个有说服力的例子来展示这个模式是成功的。为了广泛使用这个设计模式,这些例子需要展示良好的设计原则。
4.js反模式
反模式的两种观念:
-
描述对于一个特殊的问题,提出了一个糟糕的解决方案,最终导致一个坏结果发生
-
描述如何摆脱上述解决方案并能提出一个好的解决方案
当我们开发一个应用,这个工程的生命周期开始建设一直至项目完成,但一旦完成后,就进入维护阶段。判断一个解决方案的好坏要看这个团队在这个项目上投资的技术和花费的时间。这里被认为是好的和坏的情况下-如果应用在错误的情况下,一个“完美”的设计可能有资格作为一个反模式。
Javascript的反模式例子如下:
在全局上面文中定义大量污染全局命令空间的变量
在调用setTimeout和setInterval时传递字符串(会用eval来执行)而不是函数。
修改Object的原型 (这是最糟糕的反模式)
使用内联Javascript
在本应使用document.createElement的地方使用document.write。document.write被错误的用了相当多的年头,它有相当多的缺点,包括如果在页面加载后执行它可能会覆盖我们的页面。再有它不能工作在XHTML下,这也是另外一个我们使用像document.createElement这种对DOM友好方法的原因。
5.js设计模式的分类
创建型设计模式:
此模式关注于对象创建的机制,以适应工作环境的方式被创建。
基本的对象创建方法会给项目复杂化,而这些模式目的为了控制创建过程解决此问题。
- 属于这一类的一些模式是:构造器模式(Constructor),工厂模式(Factory),抽象工厂模式 (Abstract),原型模式 (Prototype),单例模式 (Singleton)以及 建造者模式(Builder)。
结构设计模式
关注对象组成和通常识别的方式实现不同对象之间的关系。优点在于系统的某一部分发生改变的时候,整个系统不需要重构,只需要改相应部分。
- 在该分类下的模式有:装饰模式,外观模式,享元模式,适配器模式和代理模式。
行为设计模式
关注改善或精简系统不同对象的通信。
- 行为模式包括: 迭代模式、终结者模式、观察者模式和访问者模式
后续开始进入全部设计模式学习笔记整理,枯燥但很重要。