闲言碎语
有次和学长闲聊提到了设计模式,也推荐了一个B站的视频。然后也一直忙别的事情始终没有好好学习一下。恰逢学期末有时间,datawhale又出了这门新教程,便一起学习下,看看何为设计模式。
初识设计模式
“设计模式”这四个字在我仅凭第一感觉,不做别的了解,我会认为是研究讨论程序设计的方法论,告诉我们怎么样才能更好地去完成代码开发。在阅读完Task01部分内容后,我发现真正意义上的“设计模式”和我想当然的“设计模式”还是有点不一样,比如:
不同的模式适用于不同的功能和设计,相反,同样的功能和设计在不同阶段或背景下也可能需要不同的模式。模式没有好坏,只有适不适合。
也就是说,这是一种/多种很灵活、抽象的代码编写理念,与我们高中写议论文套模板的套路不些一样,它更像是以需求为导向的一种/多种设计方法。在我的理解里,项目开发的需求有两大块,一是更高效地实现程序所要实现的功能,二是尽可能减小程序开发和后期维护的成本。所以设计模式本质上是为了让我们更高效地实现程序地功能、减小程序开发和后期维护的成本。这么说可能有些啰嗦,简而言之,就是:
1.更好的写代码,写出更好的代码
2.让写的代码更便于维护
3.便于团队开发时沟通解决问题,提高开发效率
即简介中所提到的:
设计模式可以让系统更加稳固、代码更加清晰。
设计模式是一种可用于工程师之间沟通的「高效语言」,当我们在讨论和分析问题时,简单几个字就可以让彼此明白心意。
需要注意的一点是,它不同于算法,它是开发代码时的一种/多种整体上思路,不考虑具体实现的细节,更为抽象。
二十三种设计模式的概览:
设计原则
- 单一职责原则(Single Responsibility Principle,SRP):修改一个类的原因只有一个。
即松耦合
- 开闭原则(Open-Closed Principle,OCP):对于扩展类应该开放,对于修改类应该封闭。
方便修改和拓展、便于后期开发和维护
- 迪米特法则(Law of Demeter,LoD):也叫最少知识原则,类应尽量降低成员的访问权限,即耦合尽可能弱。
降低类之间的耦合,提高复用率
- 依赖倒置原则(Dependency Inversion Principle,DIP):高层次的类不应依赖低层次的类,都应依赖于抽象接口。
这里比较抽象,有点感觉,但暂时举不出一个很恰当的例子,等待灵感ing
- 里氏替换原则(Liskov Substituion Principle,LSP):扩展一个类时,能够(不修改代码)将子类的对象作为父类对象进行传递。和依赖倒置原则意思接近。
同上
此外,还有下面常见的设计原则:
- 接口隔离原则(Interface Segregation Principle,ISP):尽量缩小接口范围,让客户端不必实现不用的方法。和迪米特法则接近。
- 合成/聚合复用原则(Composite/Aggragate Reuse Principle,CARP):尽量通过合成/聚合而不是继承达到复用目的。
设计模式概念和七大原则 - 腾讯云开发者社区 - 腾讯云
Sweetalk Design Pattern