(1)单一责任原则(Single Responsily Pinciple, SRP).
就个类而言, 应该仅有个引起它变化的原因。即,当需要修改某个类的时候原因有且只有一个,让一个类只做种类型责任。
(2)开放-封闭原则(Open & Close Principle, OCP).
软件实体(类、模块、函数等)应该是可以扩展的,即开放的:但是不可修改的,即封闭的。
(3)里氏替换原则(Liskov Substitution Principle, LSP).
子类型必须能够替换掉他们的基类型。即,在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有是一个(is-a) 关系。
(4)依赖倒置原则(Dependence Inversion Principle, DIP).
抽象不应该依赖于细节,细节应该依赖于抽象。即,高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
(5)接口分离原则(Interface SegregationPinciple, ISP).
不应该强迫客户依赖于它们不用的方法。时在抽象级别不应该有对于细节的依赖。这样做的好接口属于客户,不属于它所在的类层次结构。于处就在F可以最大限度地应对可能的依赖于抽象,不要依赖于具体,
变化。

上述(1)~ (5)是面向对象方法中的五大原则。Robert C.Martin提出的面向对象设计原则还包括以下几个。
(6)重用发布等价原则(edlune Rou Euwa hnipe REP).
重用的村度就是发布的粒度。
(7)共同封闭原则(Comon Closure Piciple, CCP).
包中的所有类对于同类性质的变化应该是共同封闭的。个变化若对 一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。
(8)共同重用原则(Common Reuse Principle, CRP).
一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。
(9)无环依赖原则(Acyclic Dependencies Principle, ADP). 
在包的依赖关系图中不允许存在环,即包之间的结构必须是一个直接的五环图形。
(10)稳定依赖原则(Stable Dependencies Pincipnenn SDP). 
朝着稳定的方向进行依赖。
(11)稳定抽象原则(Stable Astactions Pincipiei, SAP).
包的抽象程度应该和其稳定程第一致。

面向对象设计原则 (快速记忆11个原则)相关推荐

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

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

  2. java开闭原则_什么是开闭原则?如何实现开闭原则

    2015-04-13 06:30:01 阅读( 137 ) 开闭原则的解释就是:软件实体应当对扩展开放,对修改关闭,也就是:软件系统中包含的各种组件,例如模块(Modules).类(Classes)以 ...

  3. 面向对象设计的11项原则

    主要5大原则 (1)单一责任原则.就一个类而言,应该仅有一个引起它变化的原因.即,当需要修改某个类的时候原因有且只有一个,让一个类只做一种类型责任. (2)开放一封闭原则.软件实体(类.模块.函数等) ...

  4. 7.11 其他面向对象设计原则2:能用组合的地方,不要用继承

    其他面向对象设计原则2  能用组合的地方,不要用继承 Favor object composition over class inheritance 6.1 代码重用的两种方式  能用组合的地方不 ...

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

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

  6. [收藏]61条面向对象设计的经验原则

    (1)所有数据都应该隐藏在所在的类的内部. (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者. (3)尽量减少类的协议中的消息. (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深 ...

  7. 初学必读:61条面向对象设计的经验原则

    (1)所有数据都应该隐藏在所在的类的内部. (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者. (3)尽量减少类的协议中的消息. (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深 ...

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

    1)所有数据都应该隐藏在所在的类的内部.      (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者.      (3)尽量减少类的协议中的消息.      (4)实现所有类都理解的最基本 ...

  9. Arthur J.Riel的61条面向对象设计的经验原则[ZT]

    放假阅读计划之一是看模式,这些来自古董书<OOD启思录>的原则,很多还是值得借鉴的- "你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚.但你应当把这些原则看成警铃,若违背了 ...

最新文章

  1. db2case语句_DB2 常用的SQL语句
  2. 数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法
  3. 日常工作用Python能解决哪些问题?
  4. 1025:保留12位小数的浮点数
  5. easyui textbox 设置只读不可编辑状态
  6. 分支管理---Feature分支
  7. struts2 的国际化
  8. Please verify you invoked Maven from the correct directory
  9. jQuery.Deferred和Promise
  10. halcon直线标定板对相机标定的效果评估(对比矫正前后、对比标定板矫正效果)
  11. Mac下matplotlib中文显示
  12. 【正则表达式系列】零宽断言
  13. JAVA多线程----用--取钱问题1
  14. Spring MVC拦截器配置以及统一登陆校验实现
  15. protel99se原理图设计,怎样显示隐藏的“PART TYPE”?
  16. 如何修改电驴服务器地址,emule设置连接服务器地址
  17. Excel字符函数(3):字符查找函数Find、Search
  18. 奇瑞汽车召回部分瑞虎3xe纯电动汽车 共计8580辆
  19. 【概率论与数理统计】猴博士 笔记 p38-40 切比雪夫不等式、大数定律、中心极限定理
  20. Mybatis中parameterType的用法

热门文章

  1. 实验五_简单游戏编程
  2. chrome中preview和response的含义
  3. Excel快速填充999个序列号,如何快速生成?
  4. php 转换成字节数组吗,在PHP中如何将字节数组转换成字符串?
  5. Javaweb 解决跨域问题
  6. OSChina 周日乱弹 ——大白,我对这个世界好失望
  7. 什么是UNIX/LINUX
  8. Goland 包自动智能排序和分屏设置
  9. HTML标签及页面布局
  10. Apache APISIX 携手 CoreDNS 打开服务发现新大门