总结设计原则其实很早以前就在想了,但是起初我认为固定的原则会局限人的创新思维,陈旧的定律不一定是最好的。实际上随着代码量的沉积,你会发现无形之中你的程序设计会和这六大原则不谋而合。大道至简,前人走过的路,可能也是你将要走的路。

原则一:单一职责

这一块不管你写前端还是后端的项目,你会明白,所谓的设计模式(如MVC,MCP)就是帮助你实现部分代码的单一职责,就像是流水线上工作流程拆分,很多简单的步骤实现庞大的逻辑。当职责变得单一时,复用性提高,个体业务逻辑难度降低。这个原则算是应用最广,也最显而易见的。

原则二:里氏替换

这一原则主要针对继承,子类必须能完美的替换父类,且不影响业务逻辑。

这里只需要注意两件事:

  • 1.避免子类过度重写而失去父类原有能力和属性。
  • 2.避免子类的独有业务逻辑和业务属性侵入父类。(这一块深海颇有感触,当子类业务侵入父类时,不仅使得里氏替换难以实现,而且违背了单一职责的原则和依赖倒置原则)

原则三:依赖倒置

  • 1.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
  • 2.抽象不应该依赖于具体,具体应该依赖于抽象。

关于这个原则众说纷纭,这里理解成 AOP(面向切面)也可以。

但深海认为这个原则主要注意两个区分:类的高低层级区分和逻辑的具体与抽象区分。

不要倒行逆施,可能是依赖倒置的初衷。

原则四:接口隔离

  • 1.一个类,不应该被强迫实现一些他们不会使用的接口。
  • 2.一个类对另一个类的依赖应该建立在最小的接口上。

应该把胖接口中的方法分组,然后用多个接口替代它,每个接口服务于一个子模块。简单地说,就是使用多个专门的接口比使用单个接口要好很多。

上面的解释时比较官方的说法,深海把他换成具体的实现:

  • 1.假如某类实现了一个接口,却用不到这个接口的任何方法和属性,那么就是程序设计上出了问题,去除强制,或者拆分该接口。
  • 2.一个接口不应该具有多种业务的功能,更不要说交叉的业务,这里违背单一职责的同时,也违背了接口隔离的原则,接口一定是最小单元的抽象,这样使得该接口的功能和职责十分清晰。

原则五:迪米特法则

一个对象应该对其他对象保持最少的了解。

深海认为可以理解为对象隔离,正好和接口隔离想呼应。

通俗一点说就是解耦。为什么要解耦?或者说迪米特原则解决了什么问题呢?

假如对象耦合过高,那么一个对象就可能因为另一个对象的改变而发生较大的改变,这样的程序出问题的概率和业务的扩展难度将会大大提高。

原则六:开放封闭

对扩展开放,对修改封闭。

这个原则也是众说纷纭,有人说时宏观定义,有人说时微观定义。

其实深海认为该原则主要强调两件事:

  • 1.当新增业务或者逻辑时,避免对旧代码的修改,应当在旧代码的基础上扩展实现。
  • 2.旧代码应当具有扩展能力,也就是 从设计程序的时候,就应当考虑到将来的业务扩充。

程序设计六大原则-概况与举例相关推荐

  1. 面向对象程序设计六大原则

    面向对象程序设计中,需要遵守的原则可总结为6个,这就是大名鼎鼎的六大原则.面向对象程序设计原则也是我们用于评价一个设计模式的重要指标之一.在设计模式中,很多设计模式都遵守了这些原则. 单一职责原则(S ...

  2. 设计模式六大原则总结------备忘

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可.http://www.zuox ...

  3. 面向对象程序设计(OOP)的六大原则

    http://topmanopensource.iteye.com/blog/667249 http://yanln.iteye.com/blog/1503862 http://blog.csdn.n ...

  4. python三大特征六大原则_面向对象程序设计(Object Oriented Programming)的三大特性,六大原则...

    三大特性 封装.继承.多态性 拿简单工厂模式举例: namespace DesignMode_01 { // 计算基类 public class Operation { private double ...

  5. 举例说明层次分析的三大原则_【图片】房屋室内装修中软装设计的六大原则和三大要点【成都装饰公司吧】...

    据小编所知,"轻装修,重装饰"的概念越来越被人们接受,利用软装来装饰家居,不仅能省下一笔装修费,更会带来不一样的装修效果.下面成都装饰公司大晶装饰小编就为大家介绍一下房屋室内装修中 ...

  6. PHP 设计模式六大原则

    http://www.cnblogs.com/yujon/p/5536118.html 设计模式六大原则(1):单一职责原则 不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责 设计模 ...

  7. [转]面向对象(1、三大特征;2、六大原则)

    目录 一.面向对象的概述: 二.封装: 1.封装概述 2.封装原则 3.封装好处 4.封装坏处 5.封装代码展示 三.继承: 1.概念: 2.实现格式: 3.特点: 4.好处: 5.弊端: 6.应用场 ...

  8. java设计模式六大原则之场景应用分析

    面对项目中如此众多的设计模式,我们有时候无法 下手.在强大的设计框架也终脱离不了23种设计模式,6大原则.我们只要把内功修炼好,掌握其精髓也离我们不远了... 目录: 设计模式六大原则(1):单一职责 ...

  9. 设计模型之六大原则(有的地方称之为七大原则)

    其实模型前面一篇说了,但是在聊23模型之前,还是要说一下设计模型需要遵守的六大原则. 原则 描述 单一职责原则(SRP) 单一职责原则规定一个类应该有且仅有一个引起它变化的原因,同时不会影响其它类. ...

最新文章

  1. 再造一个爱因斯坦?GPT-3 让我看到了名人“重生”的希望
  2. 通过MapReduce统计每个单子在每个文件中出现的次数(FileSplit的使用),单词作为key,所在文本和次数作为value进行统计
  3. 兄弟连区块链教程Fabric1.0源代码分析configupdate处理通道配置更新
  4. 关于AutoML的一些笔记
  5. ASP.NET Core MVC 源码学习:MVC 启动流程详解
  6. P5007-DDOSvoid的疑惑【树形dp】
  7. python考试名词解释_python公开课|python专有名词居然有这么多,python专有名词解释已做好...
  8. java实体类的功能_(转载) java实体类的作用
  9. 查看tensorflow版本以及路径:
  10. MySQL行级锁和表级锁
  11. Flash as3.0 保存MovieClip运动轨迹到json文件
  12. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(八)
  13. 华为认证、华三认证、思科认证考哪个好?
  14. PID算法原理及基本实现
  15. 关闭win10的Skype
  16. 用友畅捷通T+,现金流量相关档案从一个帐套复制到另个帐套
  17. 算法:一个长字符串中含多个连续和不连续的空格,求不含空格的最长字符串长度
  18. E:无法定位软件包 zlib-devel
  19. 【Java】一次简单实验经历——社交网络图的简化实现
  20. win10下修改jar中的文件

热门文章

  1. idea添加web3j 依赖
  2. uos20sp3-1030系统或ubuntu16系统配置解决DNS丢失问题
  3. 什么是DQL?其含义及其常用命令解析
  4. java制作一个应用程序_一个制作java小应用程序的全过程
  5. 十大经典排序算法总结(JavaScript描述)
  6. 一个馒头引发的血案...请看完无极后观看此片,保笑死人不偿命
  7. nsi学习之HelloWorld
  8. FAT32和NTFS最大支持的单个文件大小分别是多大?
  9. OkHttp使用详解
  10. 告诉你AI营销这几个好处,还不快用起来!