若是说学习说数据结构和算法是为了写出高效的代码,那学习设计模式就是为了写出高质量的代码前端
为何要学习设计模式的三个理由:
(一) 应对面试中的设计模式相关问题
学习设计模式和算法同样,最功利、最直接的目的,可能就是应对面试了
无论是前端工程师、后端工程师,仍是全栈工程师,在求职面试中,设计模式问题是被问得频率比较高的一类问题。
特别是大厂,常常会拿算法、设计模式之类的问题来考察候选人。
常见的:面试
一、面向对象的四大特性:封装、抽象、继承、多态算法
二、SOLID 原则?DRY 原则?KISS 原则?YAGNI 原则?LOD 原则?后端
SOLID 原则并不是一个原则。它包含:单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)。DRY 原则 :Don’t Repeat Yourself 不要写重复的代码设计模式
KISS 原则:Keep It Simple and Stupid. 保持代码可读和可维护的重要手段前端工程师
YAGNI 原则:You Ain’t Gonna Need It。这条原则的核心思想就是:不要作过分设计。数据结构
LOD 原则:Law of Demeter(叫做最小知识原则,英文翻译为:The Least Knowledge Principle )可以实现代码的“高内聚、松耦合”框架
三、说一下设计模式?你都知道哪些?数据结构和算法
设计模式总共有 23 种,整体来讲能够分为三大类:建立型模式( Creational Patterns )、结构型模式( Structural Patterns )和行为型模式( Behavioral Patterns )
![]()
(二)提升复杂代码的设计和开发能力学习
能够从如下几个点思考如何设计代码:
如何分层、分模块?应该怎么划分类?
每一个类应该具备哪些属性、方法?
怎么设计类之间的交互?
该用继承仍是组合?
该使用接口仍是抽象类?
怎样作到解耦、高内聚低耦合?
该用单例模式仍是静态方法?
用工厂模式建立对象仍是直接 new 出来?
如何避免引入设计模式提升扩展性的同时带来的下降可读性问题?
(三)让读源码、学框架事半功倍