1.一个类只做一件事情,不要使用一个类完成很复杂的功能。而是拆分成更小,更具体的类。
2.一个类在实现之后,应该对扩展开发,对修改封闭。
3.如果有A,B两个类。假如A 依赖B,不应该在A 中直接调用 B类,而是应该使用依赖注入的方式,通过注入,将B类对象注入给A 类。这样B 对于 A来说,就是可以替换的。如果现在有另外的类C 提供了和B一样的接口,就可以在C 和 B之间进行切换。
4.数据参数,和常量应该放在配置文件中。像类的关系定义,也应该是可以配置的。比如说在上一条原则中,我们说的A,B,C 三个类,在这里应该选择B类还是C类,不应该在代码中写,而应该由配置文件决定。
5.所有的代码只需要关心某个类提供了哪些接口,而不需要关心这个类的具体实现。对于 A 类,只需要关心B 和 C 提供的某个接口,而不需要关心B 和 C 具体是怎么实现的。
多用组合,少用继承
针对接口编程,不针对实现编程
为交互对象之间的松耦合而努力
类应该对扩展开放,对修改关闭
依赖抽象,不是依赖具体类(新的原则)

13.面向对象设计基本原则相关推荐

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

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

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

    目录 单一职责原则 开闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特原则 单一职责原则 本篇开始介绍面向对象设计思想 单一职责原则,Single Responsibility Princip ...

  3. uml图中的各种箭头_设计模式学习笔记(二):UML与面向对象设计原则

    1 UML 1.1 UML UML(Unified Modeling Language)是统一建模语言,1997年11月UML1.1版本提交给OMG并正式通过,成为建模语言的个那个也标准.2003年6 ...

  4. 技术图文:01 面向对象设计原则

    01 面向对象设计原则 知识结构: 一碟开胃的小菜 小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位.当投递了无数简历后,终于收到了一个单位的面试 ...

  5. 数据结构与算法:04 C#面向对象设计 II

    04 C#面向对象设计 II 知识结构: 5.属性 例1:属性概念的引入(问题) public class Animal {public int Age;public double Weight;pu ...

  6. 面向对象设计原则之三:里氏替换原则

    里氏替换原则(Liskov Substitution Principle LSP)   里氏替换原则是面向对象设计的基本原则之一.任何基类可以出现的地方,子类一定可以出现.LSP是继承复用的基石,只有 ...

  7. 如何向妻子解释面向对象设计(OOD)

    前言 此文译自CodeProject上<How I explained OOD to my wife>一文,该文章在Top Articles上排名第3,读了之后觉得非常好,就翻译出来,供不 ...

  8. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性--多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

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

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

  10. 设计模式(面向对象)设计的七大原则

    声明:本人设计模式模块是集合网上资料和老师课件总结的知识点,如本博客有侵权,本人即刻删. 设计模式(面向对象设计)原则,分别是: 1.开放封闭原则:对扩展开放,对修改关闭 2.单一职责原则:一个类只做 ...

最新文章

  1. Oracle面试问题汇总
  2. Linux之磁盘管理,分区
  3. IT-标准化-系列-6.关闭事件跟踪程序
  4. ob_clean与gzip的bug
  5. 在.NET Core中处理一个接口多个不同实现的依赖注入问题
  6. 缺少using namespace std;
  7. 导出标签_如何从系统导出审计要求的日记账
  8. MFC应用程序框架分析
  9. 本地jupyter notebook远程连接服务器
  10. Text-CNN 和 fastText
  11. Django 添加应用
  12. 正则表达式之位置匹配
  13. ajax方法(菜鸟教程)
  14. [swift] UIImage NSImage PNG透明区域填充自定义颜色实现
  15. Guided Anchoring 论文笔记
  16. 基于java的简单的(即时通讯)聊天程序
  17. Spark SQL的selectExpr用法
  18. 在移动网络上创建更稳定的连接
  19. tekla中钢筋外形(TSM.RebarGeometry)
  20. 如何在Windows 10上控制多个显示器的功能

热门文章

  1. 01-Quartz2D
  2. 实体与表映射关系XXX.hbm.xml配置详解(转)
  3. [SCM]源码管理 - perforce的trigger和daemon
  4. [转]史上最最最详细的手写Promise教程
  5. Java笔记——泛型擦除
  6. 使用Rotativa在ASP.NET Core MVC中创建PDF
  7. Hive(8)-常用查询函数
  8. Android Studio 开发JNI应用
  9. Linex系统 配置php服务器
  10. C#遍历DataSet数据的几种方法总结