目录
封装的目的:①定义变量不会污染外部;②能作为一个模块调用;③遵循开闭原则。
好的封装(不可见、留接口):①变量外部不可见;②调用接口使用;③留出扩展接口。
1、封装对象时的设计模式
模式 | 目的 | 应用场景 | 应用示例 | |
创建一个对象的模式 | 工厂模式 | 方便大量创建对象 | 当某一个对象需要经常创建的时候 | 多彩的弹窗;页码;jQuery |
建造者模式 | 需要组合出一个全局对象 | 当要创建单个、庞大的组合对象时 | 复杂的轮播图;编辑器插件;vue的初始化 | |
保障对象只有一个 | 单例模式 | 需要确保全局只有一个对象 | 为了避免重复新建,避免多个对象存在互相干扰 | 全局数据储存对象;vue-router |
2、基本结构与应用示例
2.1 工厂模式
基本结构:写一个方法,只需要调用这个方法,就能拿到想要的对象
工厂模式示例:
(1)多彩的弹窗:弹窗有多种,它们之间存在内容和颜色上的差异。
- jquery需要操作dom,每一个dom都是一个jq对象
2.2 建造者模式
基本结构:把一个复杂的类各个部分,拆分成独立的类,然后再在最终类里组合到一块。
建造者模式的示例:
- 编辑器插件,初始化时需要配置大量参数,而且内部功能很多。
把不同的模块拆分为不同的类,给类定义不同的方法;最后把不同的类组合在最终的使用类里。
- Vue的初始化:vue内部众多模块,而且过程复杂
2.3 单例模式
基本结构:通过定义一个方法,使用时只允许通过此方法拿到存在内部的同一实例化对象。
单例模式的示例:
- 写一个数据储存对象,全局储存者只能有一个,不然会需要进行同步,增加复杂度
- Vue-router需要保障全局有且只有一个,否则会错乱。