主要5大原则

(1)单一责任原则。就一个类而言,应该仅有一个引起它变化的原因。即,当需要修改某个类的时候原因有且只有一个,让一个类只做一种类型责任。
(2)开放一封闭原则。软件实体(类、模块、函数等)应该是可以扩展的,即开放的;但是不可修改的,即封闭的。
(3)里氏替换原则。子类型必须能够替换掉他们的基类型。即,在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。
(4)依赖倒置原则。抽象不应该依赖于细节,细节应该依赖于抽象。即,高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
(5)接口分离原则。不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这样做的好处就在于可以最大限度地应对可能的变化。
上述(1)~(5)是面向对象方法中的五大原则。除了这五大原则之外,Robert c.Martin 提出的面向对象设计原则还包括以下几个

其他面向对象设计原则

(6)重用发布等价原则。重用的粒度就是发布的粒度。
(7)共同封闭原则。包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。
(8)共同重用原则。一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。
(9)无环依赖原则。在包的依赖关系图中不允许存在环,即包之间的结构必须是一个直接的五环图形。
(10)稳定依赖原则。朝着稳定的方向进行依赖。
(11)稳定抽象原则。包的抽象程度应该和其稳定程度一致。

面向对象设计的11项原则相关推荐

  1. 面向对象设计的五项基本原则

    文章目录 1.单一职责原则(SRP: Single Resposibility Principle) 2.开放封闭原则(OCP: Open Closed Principle) 3.里氏替换原则(LSP ...

  2. 面向对象设计领域的OCP原则

    一.OCP简介(OCP--Open-Closed Principle ): Software entities(classes,modules,functions,etc.) should be op ...

  3. IT运维服务设计的5项原则

    长期以来人们获得的一流的IT服务体验都是由一套完备的IT运维服务体系来支撑的.这套IT运维支撑体系容易让人们有一种错觉,即IT运维服务是以技术为核心的.因为在用户的眼里,好的IT运维服务总是取决于IT ...

  4. 面向对象设计的5个原则

    原文转载自:http://www.cnblogs.com/feipeng/archive/2007/03/02/661840.html 将内容整理总结了一下,方面大家学习. 面向对象的3个基本要素:封 ...

  5. 面向对象设计的10个原则

    面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...

  6. 【面向对象设计的5个原则】

    五大基本原则 单一职责原则SRP(Single Responsibility Principle) 是指一个类的功能要单一,不能包罗万象. 开放封闭原则OCP(Open-Close Principle ...

  7. 面向对象设计之单一职责原则(Simple-Responsibility Principle)

    单一职责原则: 一个类只负责一个功能领域中的相应职责,即就一个类而言,应该只有一个引起它变化的原因.  好处: 降低类的复杂度,一个类只负责一项职责,其逻辑肯定比负责多项职责简单的多 复杂度低,可读性 ...

  8. 对面向对象设计原则的总结

    正如牛顿三大定律在经典力学中的位置一样,"开-闭"原则(Open-Closed Principle)是面向对象的可复用设计(Object Oriented Design或OOD)的 ...

  9. 面向对象设计的重要原则:SOLID

    SOLID是面向对象设计5大重要原则的首字母缩写: 1.单一职责原则(SRP) 2.开放封闭原则(OCP) 3.里氏替换原则(LSP) 4.接口隔离原则(ISP) 5.依赖倒置原则(DIP) 下面具体 ...

最新文章

  1. java内存块_JVM上的并发和Java内存模型之同步块笔记
  2. AndroidStudio中提示:Failed to resolve: com.github.CymChad:BaseRecyclerViewAdapterHelper:
  3. oracle12cnolog,oracle12c 服务占用内存太大,oracle调整内存解决方法
  4. 类加载器、双亲委派模型
  5. java foreach order_Java Elements.forEach方法代码示例
  6. 个人或结对项目 - 动态显示程序运算的过程
  7. html5中figure怎么用,figure 和 figcaption 元素的正确使用方式
  8. ubuntu下nagios监控远程主机
  9. [摘抄] 匈牙利命名法
  10. mysql如何保证数据不丢失_23 | MySQL是怎么保证数据不丢的?
  11. Spring框架学习笔记
  12. PS教程:利用灰度蒙版实现无级调节
  13. java 多用组合_java 为什么说多用组合,少用继承?
  14. 常用的空间数据结构(网格/四叉树/八叉树/BSP树/k-d树/BVH/自定义划分)
  15. 我写了一份初学者的学习实践教程!
  16. 《大咖讲Wireshark网络分析》—再来一个很妖的问题
  17. 简单有创意的思维导图怎么画
  18. 2010年全球最值得模仿的230个网站
  19. Spring Cloud Gateway源码系列之路由配置加载过程
  20. 机器学习-40-GAN-07-Feature Extraction(InfoGAN,VAE-GAN,BiGAN,Feature Disentangle(Voice Conversion))

热门文章

  1. sql 多表同时查询的多种方法
  2. assertion 断言验证的一点介绍
  3. qt类似于qq托盘图标闪烁的消息提示
  4. Java正则序列_Java 正则表达式
  5. Xshell、Xftp版本情况
  6. 在win10 下建立虚拟局域网
  7. 林书豪053-开拓者三人组合
  8. 计算机应用技术专业英语,计算机应用技术专业,computer applied technology specialty,音标,读音,翻译,英文例句,英语词典...
  9. 小明酱的暑期求职纪【version 2.0】
  10. android 屏幕适配的总结,适合面试