Day27笔记
一、什么是设计模式
什么是设计模式呢? 就是指对于类似的问题,我们可以用大致相同的思想、方法去解决之,而这种通用的思想、方法就是设计模式。换言之,就是用“套路”做事情。
二、设计模式的特点
- 是已经经过验证,可以复用的解决方案(解决某一类问题的方法)。
- 是从生产和生活经验中,提炼出来的核心知识体系。
三、设计模式的分类
1.创建型设计模式
创建型设计模式专注于处理对象创建机制,适合给定情况的方式来创建对象。
- Constructor(构造器)
- Factory(工厂)
- Abstract(抽象)
- Prototype(原型)
- Singleton (单例)
- Buider(生成器)
2.结构型设计模式
结构型模式与对象组合有关,通常可以用于找出在不同对象之间建立关系的简单方法。
这种模式有助于确保子系统某一部分发生变化时,系统的整个结构不需要同时改变。
- Decorator(装饰者)
- Facade(外观)
- Flyweight(享元)
- Proxy(代理)
- Adapter (适配器)
3.行为设计模式
行为模式专注改善或简化系统中不同对象之间的通信。
- Iterator(迭代器)
- Mediator(中介者)
- Observer(观察者)
- Visitor(访问者)
四、单例模式
什么是单例模式
一个类只能有一个实例,即使多次实例化该类,也只有一个实例对象,会产生覆盖,并且提供全局访问。
单例模式的特点
- 减少了全局变量的数值。
- 代码模块化,便于维护,减少数据外泄的危险。
- 只存在一个实例对象。
// 单体模式(创建一个类)。
var Singleton = function(name) {
this.name = name;
}
Singleton.prototype.getName = function() {
return this.name;
}
// 获取实例对象。
var getInstance = (function getInstance(name) {
// 使用一个变量来判断该类是否被实例化。
this.instance = null;
if(!this.instance) {
// 如果未被实例化的话,那么我们可以实例化一次。
this.instance = new Singleton(name);
}
// 否则,直接返回已经被实例化的对象。
return this.instance;
} () )
// 测试单体模式的实例
var a = getInstance('jack')
var b = getInstance('rose')