资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

「大话设计模式 - 解读」0 设计原则

Java 更新时间: 发布时间: 计算机考试归档 最新发布

「大话设计模式 - 解读」0 设计原则

看到 Datawhale 的推送之后,也刚好借此时间阅读下设计模式,提升下代码能力。本次学习主要针对面向对象语言,在此选用 C++ 进行学习,参考学习资料:

  1. Github: sweetalk-design-pattern
  2. 《大话设计模式》解读
  3. 《大话设计模式》

设计原则

面向对象的设计模式主要有:

  • 单一职责原则(Single Responsibility Principle,SRP):修改一个类的原因只有一个。
  • 开闭原则(Open-Closed Principle,OCP):对于扩展类应该开放,对于修改类应该封闭。
  • 迪米特法则(Law of Demeter,LoD):也叫最少知识原则,类应尽量降低成员的访问权限,即耦合尽可能弱。
  • 依赖倒置原则(Dependency Inversion Principle,DIP):高层次的类不应依赖低层次的类,都应依赖于抽象接口。
  • 里氏替换原则(Liskov Substituion Principle,LSP):扩展一个类时,能够(不修改代码)将子类的对象作为父类对象进行传递。和依赖倒置原则意思接近
  • 接口隔离原则(Interface Segregation Principle,ISP):尽量缩小接口范围,让客户端不必实现不用的方法。和迪米特法则接近。
  • 合成/聚合复用原则(Composite/Aggragate Reuse Principle,CARP):尽量通过合成/聚合而不是继承达到复用目的。

单一职责原则(Single Responsibility Principle,SRP)

一个类只负责一个功能领域中的相应职责。

动机 将功能进行解耦,一个类实现一种功能。这样能带来两个好处

  1. 当功能 A 发生改变的时候,我们可以避免修改功能 B 的代码,避免出错;
  2. 可复用,越是复杂的功能耦合有时对应着越特定的任务,复用性差。而实际中,当我们设计程序或者制定任务时候,我们是可以将其分为多个模块的,不同模块的在不同的任务中可能扮演着不同的功能,当在不同任务中需要该功能/模块的时候,我们可以简单重新调用该类/模块,而不是去别的函数中进行复制粘贴。

例子 我们在实现一个计算器的时候,其实是有界面以及计算逻辑两部分,如果将界面以及计算逻辑分开在一起,那么当我们更改平台,比如从移动端移动到 web 端时候,我们只要修改显示部分的代码就好了。

开闭原则(Open-Closed Principle,OCP)

软件实体(类、模块、函数等)应该可以扩展,但是不可以修改。即对于新的功能,我们尽量通过拓展新代码的方式来实现而不是通过修改旧代码的形式。

只针对需求变换的部分进行更新,给程序整体的更新迭代带来遍历。

迪米特法则(Law of Demeter,LoD)

如果两个类不必彼此互相通信,那么这两个类就不应当发生直接的相互作用;如果其中一个类需要调用另一个类的某一个方法,可以通过第三者转发这个调用。

其目的是降低类间的交互,降低类间的耦合关系。

依赖倒置原则(Dependency Inversion Principle,DIP)

程序不应该依赖细节,细节应该依赖于抽象。简单来说,就是要针对接口编程,不要针对实现编程。

面对不同的具体实现做到易拔插,松耦合。

里氏替换原则(Liskov Substituion Principle,LSP)

一个软件实体如果使用的是一个父类的话,一定适用于其子类,而且它察觉不出父类和子类的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。

子类比父类应该更加具体,但子类并不会修改父类的功能。这其实也是使用了 OCP 以及 DIP 的原则,新的功能(子类)应当是通过拓展的方式来实现,且子类(细节)应该依赖于父类(抽象)。

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1094020.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【「大话设计模式 - 解读」0 设计原则】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2