01 - 开闭原则
程序需要对扩展开放 需要对修改关闭
也就是说 我们程序 需要对具体使用的时候拓展功能的接口 ,但是不能让他修改我们的源码。
类似于jq,vue
02 - 单一职责原则
一个模块只做一件事情,功能越单一越好
03 - 依赖倒置原则
保证使用的上层接口不会被下层接口的变化所影响
解决: 在中间加一个抽象层
function food1(){}
function food2(){}
function food3(){}
function order(){}
order.prototype.orderFood1 = function (){}
order.prototype.orderFood2 = function (){}
order.prototypt.orderFood3 = function (){}
function resturn(food){
const list = {
food1:'香蕉',
food2:'苹果',
}
return list[food]
}
function order = (food){
return resturn(foods)
}
上次模块不要依赖于具体的下层模块,而应该抽象
04 - 接口隔离原则
接口应该细化,功能应该单一
不要一个接口调用太多的方法,而是应该尽量细化,是其能力单一
05 - 迪米特法则
两个对象之间 没有必要进行直接沟通 彼此知道和了解
要想让两个对象产生沟通 我们最好让两个对象之间知道的越少越好
中介者模式是一个比较好的体现
06 - 里氏替换原则
当任何父类可以使用的地方 都可以用子类进行替换
当子类在继承父类的时候 必须保证完成继承父类的任何属性和方法
设计模式的分类
01 - 创建型
可以帮助我们进行优雅的创建对象
工厂模式
可以大量创建对象
单例模式
全局只能有一个
建造者模式
精细化组合对象
原型模式
js的灵魂 创建一个原型 后续创建的对象都依赖于这个原型
02 - 结构型
可以帮助我们优雅的设计代码结构
外观模式
接口细化之后 可以给外界一个套餐 外界不需要关注使用了哪个接口
享元模式
共享来减少数量
适配器模式
用适配代替来更改
桥接模式
独立出来,然后再对接过去
装饰者模式
更优雅的拓展需求
03 - 行为型
模块之间行为的模式总结,帮助我们组织模块行为
观察者模式
我作为第三方进行转发
指责连模式
像生产线一样组织模块
状态模式
用状态代替判断
命令这模式
用命令去解藕
策略模式
算法工厂
迭代器模式
告别for循环
04 - 技巧型
帮助我们优化代码的技巧
链模式
链式调用
惰性模式
机器学习
委托模式
让别人代替你收快递
等待者模式
等你们都回来在吃饭
数据访问模式
一个方便的数据管理器