如果说学习说数据结构和算法是为了写出高效的代码,那学习设计模式就是为了写出高质量的代码
为什么要学习设计模式的三个理由:
(一) 应对面试中的设计模式相关问题
学习设计模式和算法一样,最功利、最直接的目的,可能就是应对面试了
不管是前端工程师、后端工程师,还是全栈工程师,在求职面试中,设计模式问题是被问得频率比较高的一类问题。
特别是大厂,经常会拿算法、设计模式之类的问题来考察候选人。
常见的:
1、面向对象的四大特性:封装、抽象、继承、多态
2、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 )能够实现代码的“高内聚、松耦合”
3、说一下设计模式?你都知道哪些?
设计模式总共有 23 种,总体来说可以分为三大类:创建型模式( Creational Patterns )、结构型模式( Structural Patterns )和行为型模式( Behavioral Patterns )
(二)提高复杂代码的设计和开发能力
可以从以下几个点思考如何设计代码:
如何分层、分模块?应该怎么划分类?
每个类应该具有哪些属性、方法?
怎么设计类之间的交互?
该用继承还是组合?
该使用接口还是抽象类?
怎样做到解耦、高内聚低耦合?
该用单例模式还是静态方法?
用工厂模式创建对象还是直接 new 出来?
如何避免引入设计模式提高扩展性的同时带来的降低可读性问题?
(三)让读源码、学框架事半功倍
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。