-
**O – OpenClosed Principle 开放/封闭原则:**对扩展开放,对修改封闭;增加需求时,扩展新代码,而非修改已有代码
-
**L – Liskov Substitution Principle 里氏替换原则:**子类能覆盖父类;父类能出现的地方子类就能出现
-
**I – Interface Segregation Principle 接口隔离原则:**保持接口的单一独立;类似单一职责原则,这里更关注接口
-
**D – Dependency Inversion Principle 依赖倒转原则:**面向接口编程,依赖于抽象而不依赖于具;使用方只关注接口而不关注具体类的实现
3. 前端常见的设计模式
(1)外观模式(Facade Pattern)
外观模式就是把多个子系统中复杂逻辑进行抽象,从而提供一个更统一、更简洁、更易用的API。
**场景:**JQuery就把复杂的原生DOM操作进行了抽象和封装,并消除了浏览器之间的兼容问题,从而提供了一个更高级更易用的版本。在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少他们之间的依赖。
优点:减少系统相互依赖。提高灵活性。提高了安全性。 缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。
(2)工厂模式(Factory Pattern)
工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型。
**场景:**需要依赖具体环境创建不同实例,这些实例都有相同的行为,这时候我们可以使用工厂模式,简化实现的过程,同时也可以减少每种对象所需的代码量,有利于消除对象间的耦合,提供更大的灵活性
优点:创建对象的过程可能很复杂,但我们只需要关心创建结果。构造函数和创建者分离, 符合“开闭原则”;一个调用者想创建一个对象,只要知道其名称就可以了。扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
(3)单例模式(Singleton Pattern)
当需要一个对象去贯穿整个系统执行某些任务时,单例模式就派上了用场
**场景:**定义命名空间和实现分支型方法。登录框。vuex 和 redux中的store
(4)观察者模式(Observer Pattern)
观察者模式又称发布-订阅模式(Publish/Subscribe Pattern). 被观察对象(subject)维护一组观察者(observer),当被观察对象状态改变时,通过调用观察者的某个方法将这些变化通知到观察者。
**场景:**DOM事件;vue 响应式
优点:目标对象与观察者之间的抽象耦合关系能单独扩展以及重用。增加了灵活性。观察者模式所做的工作就是在解耦,让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响到另一边的变化。
(5)代理模式(Proxy Pattern)
是为一个对象提供一个代用品或占位符,以便控制对它的访问
**场景:**HTML元 素事件代理。ES6 的 proxy
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
!!**](https://bbs.csdn.net/topics/618191877)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!