OOP 6大基本原则

1、开闭原则: 对扩展开发、对修改关闭。

2、里氏替换原则:子类替换父类(可以用父类对象的任何地方都可以用子类对象代替)

3、依赖倒置原则:程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

4、接口隔离原则:客户端不应该依赖它不需要的接口,类间的依赖关系应该建立在最小的接口上。不能违反单一职责原则

5、合成/聚合复用原则:设计者首先应当考虑复合/聚合,而不是继承(因为它很直观,第一印象就是“哦,这个就是OO啊”)。这个就是所谓的“Favor Composition over Inheritance”,在实践中复合/聚合会带来比继承更大的利益,所以要优先考虑。

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

备注:设计模式  就是为了遵循这些原则衍生出的产物。

想搞懂设计模式,必须先知道设计模式遵循的六大原则,无论是哪种设计模式都会遵循一种或者多种原则。这是面向对象不变的法则。

时间: 2024-11-05 21:51:48

OOP 6大基本原则的相关文章

面向对象设计模式5大基本原则

"宇宙万物之中,没有一样东西能像思想那么顽固."        一爱默生 首先明确模式是针对面向对象的,它的三大特性,封装.继承.多态. 面向对象设计模式有5大基本原则:单一职责原则.开发封闭原则.依赖倒置原则.接口隔离原则.Liskov替换原则. 而设计模式都是在面向对象的特性以及5大基本原则的基础上衍生而来的具体实现. 1.单一职责原则(SRP): 1.1,SRP(Single Responsibilities Principle)的定义:就一个类而言,应该仅有一个引起它变化的原因

设计模式6大基本原则之(二)

上一篇博客中介绍了设计模式6大基本原则的前三个,这篇博客将着重介绍剩下的三个基本原则. 里氏代换原则(Liskov Substitution Principle) 子类必须能够替换掉它的父类.也就是说子类可以扩展父类的功能,但不能改变父类原有的功能. 遵循里氏代换原则的好处? 由于子类型的可替换性才使得使用父类的模块在无需修改的情况下就可以扩展. 打个比方说,香蕉是水果的一种,香蕉具有水果的特性.假如有一天我们需要再增加苹果.橘子.苹果拥有水果 的特性,由于都是继承于水果,除了更改实例化的地方程

大话设计模式1:初识设计模式及设计模式五大基本原则

一什么是设计模式? 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计 模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多 赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 二为什么要使用设计模式? 为什么要提倡Design Pattern呢?根本原因是为了代码复用,增加可维护性.那么怎么才能实现代码复用呢?面 向对象有几个原则:单一职责原

访问控制 protected, public, private 对比

OOP 3大特性:数据抽象,继承,动态绑定 3中访问标号 protected, public, private 对比 用类进行数据抽象:用继承类继承基类的成员,实现继承:通过将基类相应函数声明为virtual,是编译器在运行时决定调用基类函数or派生类函数 完成动态绑定,即表现多态性. 多态性:利用继承和动态绑定,通过基类指针和引用来表现. 动态绑定两个条件:1. 虚函数,2. 指针或引用 class Item_book { private: std::string isdn; protecte

模式比对

模式 : 在某个情景(context)下,针对某一重复出现的问题 ,可以反复应用的某种解决方案. 即:包含三个元素:问题(一个意图和一组约束),情景,解决方案(要在目标和约束之间取得平衡) 使用设计模式:应该是为了解决问题,设计目标是为了追求简单,不能为了假想的需求而使用模式. 而学习设计模式也应该是通过熟悉各种设计模式,然后在一次次运用中,体悟其内在的精神,也即是6大基本原则.基本原则是灵魂,而设计模式则可以灵活变通,具体问题,具体权衡.就如同张无忌学太极拳,得意而忘形才算学有所成. 1 .S

Python面向对象编程总结(上)

在我学习python之前一直认为python是脚本型语言,不能用面相对象的方法进行编程,当我学习了python之后我发现我错了,python不但支持面相对象而且使用的人还挺多的.我从接触编程开始就是学习的Java语言,所以面相对象编程的思想在我的脑海里根深蒂固,让我一下从面向对象编程转换到面向过程编程还有一些不适应呢,所以我就来总结一下python面向对象编程的方法和过程.我将按照面向对象的构成要素来分析,依次为类和实例.属性.方法.封装.继承.多态,如果有什么问题还请大家积极指出,我所用的版本

一周的学习总结

最近在看经济学原理这本书,英文原版.看过过程中有些还是很难懂尤其涉及到长句生词.阅读能在很需要加强.主要看了就是经济学的是个基本原则.从人类的生产交易的基本的经济行为以及相应影响经济行为的因素.比如货币等等. 当然看这本书的目的不在于钻研经济学.更多的还是英文的阅读能力.这里抄下经济学的十大基本原则吧. Principle 1: People face trade-offs. Princilple 2: The cost of something is what you give up to g

面向对象编程的三特性、七原则和六视点

一.面向对象的特性 三个基本的特性:封装.继承与多态. 1.封装面向对象编程核心思想这一就是就是将数据和对数据的操作封装在一起.通过抽象,即从具体的实例中抽取共同的性质形成一般的概念,比如类的概念. 2.继承继承体现了一种先进的编程模式.子类可以继承父类的属性和功能,即子类继承了父类所具有的数据和数据上的操作,同时又可以增添子类独有的数据和数据上的操作.例如,"人类"继承了"哺乳类"的属性和功能,同时又增添了人类独有的属性和功能. 3.多态 多态是面向对象编程的又一

学习进度条——第七周

  第七周 所花时间(包括上课) 上课:200分钟 看书:75分钟 编程:0小时 代码量(行) 0行 博客量(篇) 2篇 了解到的知识点 1.团队有一致的集体目标,团队要一起完成这目标.一个团队的成员不一定要同时工作 2.在复杂的项目里,要让 一线队员做决定 3.MSF(Microsoft Solution Framework)的9大基本原则 4.要做团队里的鸡或猪