导图社区 编程思想
关于编程思想的思维导图,如 结构型有:桥接模式、访问者模式、外观模式(门面模式)、策略模式、模版法、组合模式、迭代器模式、备忘录模式(缓存模式)、享元模式、职责链模式。
编辑于2023-05-28 00:05:42 湖南编程思想
GOF23种设计模式 --- http://blog.jobbole.com/29454/ --- 一个单例工厂类的实现: --- ` var i = 1; function Letter() { this.getValue = function () { return this.value || ''; } } var factory = (function () { var factory = null; function Factory() { this.name = i++; this.baseObj = new Letter(); // debugger; } Factory.prototype.A = function (value) { this.baseObj.value = value return this.baseObj; } Factory.prototype.B = function (value) { this.baseObj.value = value return this.baseObj; } Factory.prototype.getObj = function (type, value) { return this[type](value); } return { getObj: function (type, value) { if (!factory) { factory = new Factory(); } console.log('factory:'); console.dir(factory); return factory[type](value); } }; } ) (); console.log('start:'); console.dir(factory); var A = factory.getObj('A', 'a'); console.log('A:' + A.getValue()); console.dir(factory); console.dir(A); var B = factory.getObj('B', 'b'); console.log('B:' + B.getValue()); console.dir(factory); console.dir(B); `
创建型
工厂模式
拼装法
设计一个公共基类
在工厂类实现基类
工厂类依据创建参数增强基类后返回
直接反馈法
写出多个需求类
工厂类依据创建参数实现对应需求类后直接返回
建造者模式
模块化地实现一个类
var Person=function(name,work){ var _person=new Human(); _person.name=new Named(name); _person.work=new Work(work); return _person; }
单例模式
结构型
桥接模式
将抽象部分和现实部分分离开
访问者模式
若A要调用B就把A当成参数交给B处理
call和apply
外观模式(门面模式)
通过高级接口对低级接口进行组合封装
策略模式
依据参数执行不同的逻辑代码
模版法
父类通过控制子类重构的函数来实现类的功能
组合模式
将各个元素的同一操作组合在一起处理
迭代器模式
依照某一规则访问聚合元素内的属性
备忘录模式(缓存模式)
将数据缓存以便再次使用
享元模式
共享某一元素,或重复引用某元素
职责链模式
将问题处理一个个逐级传递直到有人接收并处理该问题
行为型
观察者(监听)模式
让发布者决定代码什么时候执行,使用者只需订阅
eg: 事件监听 rxjs
适配器模式
一个转接口,将不匹配的转换成匹配的,将复杂的转成简单的
代理模式
同过对原有对象进行修改加强成一个新的代理对象
对请求的封装
中介模式
为各个需求方选择和返回各个供应方的结果
建造 单例 工厂 享元 访问 桥接 中介 适配器 代理 门面 组合 策略 备忘录(历史缓存) 模版 观察(监视) 职责链 迭代器
插件选择与使用
准备方案二,并时刻备份
例如:如果要用MongoDB或者Redis,可以用MySQL做备份存储。
灰度发布:先轻后重,先少后多
小改大加
控制反转(Ioc,又称依赖注入DI)
强内聚,弱耦合
内聚
耦合
MVVM
M控制层
V视图层
VM视图模型
将视图和模型分离
MVC
六大设计原则
自由主题