如果说学习说数据结构和算法是为了写出 高效的代码 ,那学习设计模式就是为了写出 高质量的代码
为什么要学习设计模式的三个理由:
(一)应答面试中的设计模式相干问题
学习设计模式和算法一样,最功利、最间接的目标,可能就是应答面试了
不论是前端工程师、后端工程师,还是全栈工程师,在求职面试中,设计模式问题是被问得频率比拟高的一类问题。
特地是大厂,常常会拿算法、设计模式之类的问题来考查候选人。
常见的:
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 进去?
如何防止引入设计模式进步扩展性的同时带来的升高可读性问题?
(三)让读源码、学框架事倍功半