OOP基本上有6大原则,而实际上都是互补的,也就是说一些原则需要利用另一些原则来实现自己。6大原则如下:

1) Open-Close Principle(OCP),开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。这是最重要也是最为抽象的原则,基本上我们所说的Reusable Software既是基于此原则而开发的。其他的原则也是对它的实现提供了路径。

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

3) Dependence Inversion Principle(DIP),依赖倒换原则,“设计要依赖于抽象而不是具体化”。换句话说就是设计的时候我们要用抽象来思考,而不是一上来就开始划分我需要哪些哪些类,因为这些是具体。这样做有什么好处呢?人的思维本身实际上就是很抽象的,我们分析问题的时候不是一下子就考虑到细节,而是很抽象的将整个问题都构思出来,所以面向抽象设计是符合人的思维的。另外这个原则会很好的支持OCP,面向抽象的设计使我们能够不必太多依赖于实现,这样扩展就成为了可能,这个原则也是另一篇文章《Design by Contract》的基石。

4) Interface Segregation Principle(ISP),接口隔离原则,“将大的接口打散成多个小接口”,这样做的好处很明显,我不知道有没有必要再继续描述了,为了节省篇幅,实际上我对这些原则只是做了一个小总结,如果有需要更深入了解的话推荐看《Java与模式》,MS MVP的一:本巨作!^_^

5) 单一职责:一个类的功能尽量单一,降低耦合

6) Law of Demeter or Least Knowlegde Principle(LoD or LKP),迪米特法则或最少知识原则,这个原则首次在Demeter系统中得到正式运用,所以定义为迪米特法则。它讲的是“一个对象应当尽可能少的去了解其他对象”。也就是又一个关于如何松耦合(Loosely-Coupled)的法则。

opp原则_OPP六大原则相关推荐

  1. php设计模式六大原则,设计模式六大原则是什么

    设计模式六大原则:1.单一原则:2.里氏替换原则:3.依赖倒置原则:4.接口隔离原则:5.迪米特原则:6.开闭原则. 本文操作环境:Windows7系统,Dell G3电脑. 设计模式六大原则: 1. ...

  2. 空手撸SOLID架构设计原则,六大原则层层解析,你绝想不到

    设计原则概述 通常来说,要想构建-个好的软件系统,应该从写整洁的代码开始做起.毕竟,如果建筑所使用的砖头质量不佳,那么架构所能起到的作用也会很有限.反之亦然,如果建筑的架构设计不佳,那么其所用的砖头质 ...

  3. java开闭原则实现代码_向对象的六大原则

    前言 我们都知道面向对象有六大原则,23种设计模式.它们可以指导我们如何写出更加优秀的代码.六大原则是基础,我们面向对象编程应该尽量遵从这六大原则,才能写出优秀的代码. 23种设计模式是前人为我们总结 ...

  4. 设计模式(2)六大原则(七大原则)

    前言 前面已经明白了UML是什么,UML该在哪里用 接下来开始真正接触设计模式的思想:六大原则 目录 六大原则(七大原则) 开闭原则 2.1. 开闭原则的作用 2.2. 开闭原则的案例 里氏替换原则 ...

  5. unity 项目开发——浅谈设计模式的六大原则(一)

    目录 前言 首先,六大原则是谁? 其次,为什么需要学习这六大原则? 正文 一.单一职责原则 示例: 因此我们需要进行拆分,根据具体的职能可将其具体拆分如下: Unity 单一职责原则 二.开闭原则 U ...

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

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

  7. 面向对象设计之魂(六大原则)

    [版权申明] 非商业目的注明出处可自由转载 博文地址:https://blog.csdn.net/ShuSheng0007/article/details/87901626 出自:shusheng00 ...

  8. 「设计模式」六大原则之三:里氏替换原则小结

    文章目录 1.里式替换原则定义 2. 举例说明 示例1: 示例2: 3. 哪些代码明显违背了 LSP? 子类违背父类声明要实现的功能 子类违背父类对输入.输出.异常的约定 子类违背父类注释中所罗列的任 ...

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

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

最新文章

  1. 09最短小说:意见统一
  2. PLUS | 包含蛋白质特异性的新型预训练方案
  3. 学习jQuery之旅--使用炫酷的jQuery插件
  4. python【数据结构与算法】从一个例子引入动态规划❤️
  5. bzoj 1801: [Ahoi2009]chess 中国象棋【dp】
  6. adb logcat 保存_保存的logcat在Android设备上的文本文件
  7. Extract Superclass(提炼超类)
  8. sql server 2014 判断一个列某个字段是否相同_Select * from user的千层套路——一个sql是如何执行的...
  9. flask项目源码_源码解读:Flask上下文与代理模式
  10. YOLO系列专题——YOLOv1实践篇
  11. webpack 安装vue(两种代码模式compiler 和runtime)
  12. dos攻击工具如何使用?两款dos攻击工具介绍
  13. a标签实现下载文件功能
  14. 移动办公系统全自动加密和数字签名解决方案
  15. 二阶矩阵转置怎么求_这个二阶矩阵的二范数怎么求
  16. PC式硬盘录像机常见故障剖析,监控卡常见问题(一)
  17. P物质肽[DArg1, DTrp5, 7, 9, Leu11]
  18. 【Memcached】分布式内存对象缓存系统
  19. 转 js控制excel打印完美解决方案
  20. 自定义starter出现Unable to read meta-data for class 这样解决

热门文章

  1. 等量点电荷matlab,点电荷电场的MATLAB作图.pdf
  2. Wireshark抓取QQ数据包实例分析
  3. 牛客网多校训练 德玛西亚万岁
  4. 数据分析师、数据科学家、大数据专家三个职位的区别
  5. 安装ubuntu出现花屏_在Ubuntu 18.04系统中挂起,再唤醒就出现花屏的解决办法
  6. 简单三步教你学会用Vegas做鬼畜!
  7. 动作识别《X3D: Expanding Architectures for Efficient Video Recognition》
  8. CAN矩阵、CAN网络、DBC、MDF关系
  9. 上海“迪士尼”会成为“乐园”吗
  10. 自动驾驶TPM技术杂谈 ———— APA标准(ISO 16787)