开放封闭原则:
对稳定的东西进行封装,将可能会变动的东西分离出来,增加功能或者改动的时候增加代码即可,无需改动代码。
1.放置挂钩
hook(待研究)
2.使用回调函数
把回调函数当做参数传入一个稳定和封闭的函数中,当回调函数被执行的时候,程序会因为回调函数的内部逻辑不同,而产生不同的结果。
ajax异步请求是不变的,获取数据后的下一步可能变化。

1.设计模式

1.1 是什么?

软件工程中,设计模式是对软件设计中普遍存在的各种问题所提出的解决方案。不同情况下,解决问题的方案。设计模式使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

1.2 有哪些?

1.2.1单例模式

一个类仅有一个实例,提供一个访问他的全局访问点。实现的方法为先判断实例存在否,如果存在则直接返回,如果不存在就创建了再返回,确保一个类只有一个实例对象。

1.2.2工厂模式

工厂模式通常分成3个角色:
工厂角色-负责实现创建所有实例的内部逻辑
抽象产品角色-是所创建的所有对象的父类,负责描述所有实例所共有的公共接口
具体产品角色-是创建目标,所有创建的对象都充当这个角色的某个具体类的实例

1.2.3策略模式

定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替换,至少分两部分:
策略类(可变),策略类封装了具体的算法,并负责具体的计算过程
环境类(不变),接受客户的请求,随后将请求委托给某一个策略类

1.2.4代理模式

为对象提供一个代用品或占位符,以便控制对它的访问。
例如:图片懒加载

1.2.5中介者模式

通过一个中介者对象,其他所有的相关对象都通过该中介者对象来通信,而不是相互引用,当其中一个对象发生改变时,只需要通知中介者对象即可
可以接触对象与对象直接的紧耦合关系

1.2.6装饰者模式

在不改变对象自身的基础上,在程序运行期间给对象动态地添加方法
在原有方法上挂载其他方法来满足现有需求

1.3 小结

从许多优秀的软件系统中总结出的成功的、能够实现可维护性、复用的设计方案,使用这些方案将可以让我们避免做一些重复性的工作

设计模式提供了一套通用的设计词汇和一种通用的形式来方便开发人员之间沟通和交流,使得设计方案更加通俗易懂

大部分设计模式都兼顾了系统的可复用性和可扩展性,这使得我们可以更好地重用一些已有的设计方案、功能模块甚至一个完整的软件系统,避免我们经常做一些重复的设计、编写一些重复的代码

合理使用设计模式并对设计模式的使用情况进行文档化,将有助于别人更快地理解系统

学习设计模式将有助于初学者更加深入地理解面向对象思想