Home 聊一聊设计模式
Post
Cancel

聊一聊设计模式

背景

作为程序员,数据结构, 算法和设计模式是经常被提起,且绕不过的三扇大门。对这三项通用技能的掌握可能直接影响你能拿到手的钱。

相对来说,数据结构和算法还是比较实际,只要你花时间,不断练习,都不会太差的东西,类似武功中的招数。而设计模式却虚无缥缈很多,类似于武功的心法,需要你自己领悟,只有真正领悟透彻后,它才是你能够使用的利器。

那学习设计模式,我们又是在学习什么呢?它能给我们带来什么呢?

学习设计模式是为了什么

学习设计模式其实本质是在学习如何将我们的代码解耦,且易于后续的扩展。这样,可维护性提高了之后,日后的需求改动所需要的代码改动会有质的差别。毕竟 不变的只有变化 嘛。

设计原则和设计模式的关系

说到设计模式,我们应该再说说设计原则和设计模式之间的关系。

设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设计模式,具有指导意义。比如,“开闭原则”是很多设计模式(策略、模板等)的指导原则。

而设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。应用设计模式的主要目的是提高代码的可扩展性。从抽象程度上来讲,设计原则比设计模式更抽象。设计模式更加具体、更加可执行。

设计原则和设计模式共同对我们的代码规范和日常代码起着指导性的作用。

设计原则

设计原则主要包含SOLID原则, KISS原则, YAGNI原则, DRY原则, LOD原则。我们分别来说说代表的意思。

SOLID原则

SOLID原则包含了多个重要设计原则指的是

  • SRP - Single Responsibility Principle 单一职责原则
  • OCP - Open Close Principle 开闭原则
  • LSP - Liskov Substitution Principle 里氏替换原则
  • ISP - Interface Segregation Principle 接口隔离原则
  • DIP - Dependency Inversion Principle 依赖反转原则

KISS原则

Keep it Simple and Stupid

YAGNI原则

You Ain’t Gonna Need it. 在设计或开发的时候,多思考是否真的需要,避免过度设计。

DRY原则

Don’t Repeat Yourself 不要写重复的代码。

LOD原则

Law of Demeter, AKA, The Least Knowledge Principle. 迪米特法则。高内聚、低耦合。底层较通用的类需要尽量不依赖其他类,做好抽象,达到足够的解耦。