6大原则如下:

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

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

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

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

3) 里氏代换原则,很严格的原则,规则是“子类必须能够替换基类,否则不应当设计为其子类。”也就是说,一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。

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

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

“High level modules should not depend upon low level modules, both should depend upon abstractions. Abstractions should not depend upon details, details should depend upon abstractions.”

高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。

另一种表述为: 要针对接口编程,不要针对实现编程。即“Program to an interface, not an implementation.”

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

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

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

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

  优点:消除耦合。

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

  1. [转]面向对象的六大原则

    现在编程的主流语言基本上都是面向对象的.如C#,C++,JAVA.我们在使用时,已经构造了一个个的类.但是往往由于我们在类内部或外部的设计上存在种种问题,导致尽管是面向对象的语言,却是面向过程的逻辑, ...

  2. 转载(面向对象设计的原则)

    这是设计模式系列开篇的第一篇文章.也是我学习设计模式过程中的总结.这篇文章主要讲的是面向对象设计中,我们应该遵循的六大原则.只有掌握了这些原则,我们才能更好的理解设计模式. 我们接下来要介绍以下6个内 ...

  3. 深入浅出精讲面向对象设计七大原则,彻底领悟设计背后思想

    深入浅出精讲面向对象设计七大原则,彻底领悟设计背后思想 欢迎阅读 一.面向对象设计原则提出背景 二.面向对象设计七大原则总览 三.单一职责原则(SRP) 3.1定义: 3.2分析: 3.3举例: 四. ...

  4. 开工大吉,重温下架构设计六大原则

    今天是正月初七,我还请假在家,刚刚读了<银河帝国>,读到马洛解决了谢顿危机,成为继哈里谢顿.赛佛哈定之后的第三位英雄.春节过得还不错,休息了.陪伴家人了.学习了.思考了. 重温下架构设计六 ...

  5. 面向对象的六大原则之 —— 迪米特原则

    学习了何红辉.关爱民写的<Android设计模式>,对于面向对象的六大原则有进一步的理解,特此根据自己的理解记录总结一下 什么是迪米特原则 也称为最少知识原则,意思就是一个对象应该对其他对 ...

  6. 面向对象的六大原则(原则都是唬人 关键在于理解面向对象)

    一 六大原则叫什么我已经忘了 二 六大原则到底是什么以及有什么作用,一句话:教你在用面相对象编程语言编程的时候如何更好地利用面向对象编程语言的特性. 例如:如果你使用的是java语言的话. 1 最基本 ...

  7. 走向灵活软件之路-面向对象的六大原则

    前言 关于设计模式六大设计原则的资料网上很多,但感觉很多地方解释地都太过于笼统化,特此再总结一波. 优化第一步-单一职责原则SRP 单一职责原则(Single Responsibility Princ ...

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

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

  9. 面向对象设计五大原则

    一 Single Responsibility Principle--单一职责原则 核心思想: 一个类应该只有一个引起它变化的原因. 假设存在这样的设计. Rectangle类具有两个方法,一个方法是 ...

最新文章

  1. python---django中orm的使用(5)数据库的基本操作(性能相关:select_related,和prefetch_related重点)(以及事务操作)...
  2. Linux 设备树device tree 使用手册
  3. ADO.NET 基础学习笔记1
  4. android 不可点击状态,Android系统.如何使用setClickable同时设置所有按钮可点击或不可点击?...
  5. c# mysql 文件存储_c# 如何实现保存文件到数据库
  6. Misc(网络+组成原理)
  7. php 文件保存函数,php 写入和读取文件函数
  8. 力扣 数组中的最长山脉
  9. 在MyEclipse中使用javadoc导出API文档详解
  10. 常用网盘资源搜索网站
  11. List工具类之List集合去重
  12. 模式识别复习 思维导图
  13. linux安装mongodb,实测好用
  14. Oracle设计题资料分析题
  15. Oracle 11g 新特性 -- Oracle Restart 说明
  16. 网络号 IP地址 子网掩码如何计算
  17. 【数据可视化应用】地图投影(附代码)
  18. 计算机同时一级二级证,计算机等级考试一个级别里的几个科目是同时考 – 手机爱问...
  19. cesium 入门开发系列矢量瓦片加载展示(附源码下载)
  20. 【年终总结】马三北漂记之8102年总结

热门文章

  1. 为了自己的梦想实干一把
  2. 苹果推出新Mac Pro:配备28个核处理器及世界上最强大的显卡
  3. 接口自动化测试工具- 基础篇:postman 接口响应详解
  4. mysql中create role_GP数据库中角色(Role)的创建和管理
  5. 如何把数字证书导入到Windows根证书存储区
  6. Ubuntu18.04 外接显示屏详细配置
  7. Unicode 编码表
  8. activiti-modeler 工作流设计器代码分析
  9. MySQL的四大隔离级别,你都知道哪些?
  10. android+曝光时间软件,Camera FV-5相机