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