实际上都是互补的,也就是说一些原则需要利用另一些原则来实现自己。

6大原则如下:

1)单一职责原则,一个合理的类,应该仅有一个引起它变化的原因,即单一职责,就是设计的这个类功能应该只有一个;

  优点:消除耦合,减小因需求变化引起代码僵化。

2) 开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。

  优点:降低了程序各部分之间的耦合性,其适应性、灵活性、稳定性都比较好。当已有软件系统需要增加新的功能时,不需要对作为系统基础的抽象层进行修改,只需要在原有基础上附加新的模块就能实现所需要添加的功能。增加的新模块对原有的模块完全没有影响或影响很小,这样就无须为原有模块进行重新测试。

3) 里氏代换原则,很严格的原则,规则是“子类必须能够替换基类,否则不应当设计为其子类。”也就是说,子类只能去扩展基类,而不是隐藏或覆盖基类,

  优点:可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。

4) 依赖倒换原则,“设计要依赖于抽象而不是具体化”。换句话说就是设计的时候我们要用抽象来思考,而不是一上来就开始划分我需要哪些哪些类,因为这些是具体。

  优点:人的思维本身实际上就是很抽象的,我们分析问题的时候不是一下子就考虑到细节,而是很抽象的将整个问题都构思出来,所以面向抽象设计是符合人的思维的。另外这个原则会很好的支持(开闭原则)OCP,面向抽象的设计使我们能够不必太多依赖于实现,这样扩展就成为了可能,这个原则也是另一篇文章《Design by Contract》的基石。

5) 接口隔离原则,“将大的接口打散成多个小接口”,让系统解耦,从而容易重构,更改和重新部署。

  优点:会使一个软件系统功能扩展时,修改的压力不会传到别的对象那里。

6) 迪米特法则或最少知识原则,这个原则首次在Demeter系统中得到正式运用,所以定义为迪米特法则。它讲的是“一个对象应当尽可能少的去了解其他对象”。

  优点:消除耦合。

转载于:https://www.cnblogs.com/lipeineng/p/5916345.html

面向对象设计的六大原则简介相关推荐

  1. java中高级面试_中高级面试常问:Java面向对象设计的六大原则

    这篇文章主要讲的是面向对象设计中,我们应该遵循的六大原则.只有掌握了这些原则,我们才能更好的理解设计模式.我们接下来要介绍以下6个内容.单一职责原则--SRP 开闭原则--OCP 里式替换原则--LS ...

  2. 面向对象设计的六大原则

    最近在看别人写的文章的时候,提到了开放封闭和最少知识原则,一脸懵逼-所以特来恶补. 参考1:[六大原则,写的挺好,因为涉及到java感觉有点吃力,接口啥玩意,抽象类] https://www.cnbl ...

  3. 面向对象设计的七大原则 (包括SOLID原则)

    文章目录 概述 1. 单一原则 2. 里氏替换原则 3. 依赖倒转原则 4. 接口分隔原则(Interface Segregation Principle ,ISP) 5. 迪米特法则 (Law of ...

  4. 61条面向对象设计的经验原则

    61条面向对象设计的经验原则 摘抄自<OOD 启思录>--Arthur J.Riel 著 鲍志云 译 "你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚.但你应当把这些原则看 ...

  5. 深入理解面向对象设计的七大原则

    一.面向对象设计的七大原则是什么? 1.开放封闭原则 2.里氏转换原则 3.依赖倒转原则 4.组合/聚合原则 5.接口隔离原则 6."迪米特"法则 7.单一职责原则 二.七大原则是 ...

  6. PHP面向对象设计的五大原则

    面向对象设计的五大原则:单一职责原则.接口隔离原则.开放-封闭原则.替换原则.依赖倒置原则.这些原则主要是由Robert C.Martin在<敏捷软件开发--原则.方法.与实践>一书中总结 ...

  7. solid 设计原则 php,面向对象设计SOLID五大原则

    今天我给大家带来的是面向对象设计SOLID五大原则的经典解说. 我们知道,面向对象对于设计出高扩展性.高复用性.高可维护性的软件起到很大的作用.我们常说的SOLID五大设计原则指的就是: S = 单一 ...

  8. 软件系统架构设计的六大原则

    软件系统架构设计的六大原则 1.单一职责原则(SRP) 2.开放封闭原则(OCP) 3.里氏替换原则(LSP) 4.最少知识原则(LKP) 5.接口隔离原则(ISP) 6.依赖倒置原则(DIP) 1. ...

  9. 面向对象设计与开发原则

    介绍 这里介绍了5个面向对象设计与开发原则–SOLID原则,分别是:单一职责原则.开放封闭原则.里氏替换原则.接口隔离原则.依赖倒置原则.另外还介绍了其他3个原则:迪米特法则."Tell, ...

最新文章

  1. 安卓获取浏览器上网记录_Android 获取浏览器当前分享页面的截屏示例
  2. LeetCode Number of Digit One(计算1的个数)
  3. connect: 网络不可达_Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
  4. keil用c语言怎么编辑器,用keil软件编写单片机程序的步骤
  5. 二叉树的相关题(叶子结点个数,最大深度,找特殊值结点(值不重复),判断两个树是否相同,判断两个数是否为镜像树,是否为子树,)
  6. python随机发红包_python 微信红包随机金额
  7. linux转码软件下载,格式工厂linux版
  8. 社交游戏Zynga之死
  9. [学习笔记]中国剩余定理
  10. Linux内核编程打印所有线程信息
  11. linux下安装交叉编译器
  12. 电子科技大学软件工程大一到大二课程
  13. 谷歌中国正式宣布李开复辞去总裁一职
  14. linux两块硬盘主从,电脑双硬盘双系统启动的顺序调整及设置方法
  15. 手机用html电视,4种方法教你手机如何连接智能电视
  16. Java实现 蓝桥杯 算法训练 相邻数对(暴力)
  17. python画国旗和八卦图
  18. Shell | 文件或关键字查询
  19. 计算机管理home,电脑home键是什么意思
  20. 【操作系统】实验三 进程调度模拟程序

热门文章

  1. php recordarray,php5.5新数组函数array-column使用实例
  2. C语言printf函数
  3. mysql capi函数详解_技术分享|MySQLCAPI参数MYSQL_OPT_READ_TIMEOUT的一些行为分析
  4. 刷新mac地址命令_常用网络检测命令-必备技术
  5. 蓝牙遥控开关c语言程序,单片机蓝牙控制开关制作(程序源码+安卓APP分享)
  6. java+switch语句+枚举_Java:在子类下使用带有枚举的switch语句
  7. hadoop 概要
  8. linux contos7防火墙加端口,Linux:centos7防火墙开放端口
  9. VMware vSphere 6.7之vSAN配置全程图解
  10. Docker学习总结(60)——Docker-Compose 基础知识回顾总结