
设计模式与开发实践
奔跑的皮卡丘
奔跑吧~皮卡丘
展开
-
代理模式
代理模式What: 为一个对象提供一个代用品或占位符,以便控制对他的访问where: 图片预加载,合并http请求(上传、切换页面请求数据)、防火墙代理、远程代理、保护代理(权限)、写时复制代理when:who:why:how:代理模式分类保护代理:过滤无效请求。虚拟代理:将一些开销很大的部分,延迟到需要时创建。为什么使用代理单一职责原则(功能分离,设置img和预加载分离),开放封闭原则(后期修改可分功能更改)。代理和本体接口一致性(使用方无感知),后期去除用户无感知应原创 2020-06-15 14:10:32 · 157 阅读 · 0 评论 -
策略模式
What: 定义一系列算法,把他们一个个封装起来,并且使他们可以相互替换(相互替换主要针对静态语言,对于js弱类型语言则不是很重要)where: 验证表单;运动函数;when:who:why: 优点:解决代码量、开放封闭(需要增加if else判断、缺乏弹性)(扩展性)、复用行性;缺点:必须了解所有策略才可以选择how: 将算法的使用和算法的实现分离出来(可以体现出多态性)eq1: 基于策略模式的编写方式:策略类:封装具体算法;环境类:接受客户请求,把请求委托给某一个策略;eq2:.原创 2020-06-03 16:26:39 · 151 阅读 · 0 评论 -
单例模式
What: 保证一个类仅有一个实例,并提供一个访问它的全局变量where: 登陆界面;遮罩层;线程池;全局缓存when:who:why: 避免dom类的返回重绘和多余;避免频繁创建和销毁实例,减少内存占用;不适用动态扩展对象,或需创建多个相似对象的场景how: 首推惰性单例eq1: 全局变量是否是单例:全局变量符合单例的定义,但是存在致命缺点(1. 被覆盖; 2. 污染全局;)简单版本实现var Singleton = function (name) { this.name =.原创 2020-05-27 17:07:23 · 150 阅读 · 0 评论