13.面向对象设计基本原则
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.单一职责原则(SRP: Single Resposibility Principle) 2.开放封闭原则(OCP: Open Closed Principle) 3.里氏替换原则(LSP ...
- 面向对象设计六大基本原则
目录 单一职责原则 开闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特原则 单一职责原则 本篇开始介绍面向对象设计思想 单一职责原则,Single Responsibility Princip ...
- uml图中的各种箭头_设计模式学习笔记(二):UML与面向对象设计原则
1 UML 1.1 UML UML(Unified Modeling Language)是统一建模语言,1997年11月UML1.1版本提交给OMG并正式通过,成为建模语言的个那个也标准.2003年6 ...
- 技术图文:01 面向对象设计原则
01 面向对象设计原则 知识结构: 一碟开胃的小菜 小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位.当投递了无数简历后,终于收到了一个单位的面试 ...
- 数据结构与算法:04 C#面向对象设计 II
04 C#面向对象设计 II 知识结构: 5.属性 例1:属性概念的引入(问题) public class Animal {public int Age;public double Weight;pu ...
- 面向对象设计原则之三:里氏替换原则
里氏替换原则(Liskov Substitution Principle LSP) 里氏替换原则是面向对象设计的基本原则之一.任何基类可以出现的地方,子类一定可以出现.LSP是继承复用的基石,只有 ...
- 如何向妻子解释面向对象设计(OOD)
前言 此文译自CodeProject上<How I explained OOD to my wife>一文,该文章在Top Articles上排名第3,读了之后觉得非常好,就翻译出来,供不 ...
- [.net 面向对象编程基础] (13) 面向对象三大特性——多态
[.net 面向对象编程基础] (13) 面向对象三大特性--多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...
- 61条面向对象设计的经验原则
61条面向对象设计的经验原则 摘抄自<OOD 启思录>--Arthur J.Riel 著 鲍志云 译 "你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚.但你应当把这些原则看 ...
- 设计模式(面向对象)设计的七大原则
声明:本人设计模式模块是集合网上资料和老师课件总结的知识点,如本博客有侵权,本人即刻删. 设计模式(面向对象设计)原则,分别是: 1.开放封闭原则:对扩展开放,对修改关闭 2.单一职责原则:一个类只做 ...
最新文章
- Oracle面试问题汇总
- Linux之磁盘管理,分区
- IT-标准化-系列-6.关闭事件跟踪程序
- ob_clean与gzip的bug
- 在.NET Core中处理一个接口多个不同实现的依赖注入问题
- 缺少using namespace std;
- 导出标签_如何从系统导出审计要求的日记账
- MFC应用程序框架分析
- 本地jupyter notebook远程连接服务器
- Text-CNN 和 fastText
- Django 添加应用
- 正则表达式之位置匹配
- ajax方法(菜鸟教程)
- [swift] UIImage NSImage PNG透明区域填充自定义颜色实现
- Guided Anchoring 论文笔记
- 基于java的简单的(即时通讯)聊天程序
- Spark SQL的selectExpr用法
- 在移动网络上创建更稳定的连接
- tekla中钢筋外形(TSM.RebarGeometry)
- 如何在Windows 10上控制多个显示器的功能