什么是设计模式
模式是一种可复用的解决方案,可用于解决软件设计中遇到的常见问题
为了编写易于维护的代码,找到代码中重复出现的主题并优化他们,这就是设计模式
在我看来的,设计模式是一种解决代码维护性和简易优化代码的数据结构
设计模式的三法则
- 适合性
- 实用性
- 适用性
反模式的两个概念:
- 描述一种针对某个特定问题的不良解决方案,该方案会导致糟糕的情况发生
- 描述如何摆脱前述的糟糕情况以及如何创造好的解决方案
js中反模式的示例
- 全局变量污染
- 向定时器传递字符串而不是回调函数,触发eval()的内部使用
- 修改Object原型
- 以内嵌样式使用js
- 在使用document.creatElment等原生DOM方法更适合的情况下,使用document.write.
三种设计模式的类别
1.创建型设计模式
专注于处理处理对象创建机制,以适合给定情况的方式来创建对象
属于该类型的模式包括:
Constructor(构造器) Factory(工厂) Abstract(抽象) Prototype(原型) Singleton(单例) Builder(生成器)
2.结构型设计模式
与对象组合有关,通常可以用于找出在不同对象之间建立关系的简单方法
属于该类型的模式包括:
Decorator(装饰者) Flyweight(享元) Facade(外观) Adapter(适配器) Proxy(代理)
3.行为设计模式
专注于改善和简化系统中不同对象之间的通信
属于该类型的模式包括:
Iterator(迭代器) Mediator(中介者) Observer(观察者) Visitor(访问者)
因为js没有类的概念,一般我们创建的新类是以function函数实现的类,约定函数名首字母大写来区分类的函数,再通过关键字new来创建新对象(值得注意的是new之后,function里的代码或者es6中的constructor会被立即执行)
以上是个人对象《javascript设计模式》前八章的总结和看法