`
- 浏览:
28451 次
- 性别:
- 来自:
湖南
-
1. 开闭原则(the Open Closed Principle OCP) 一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。
因此在进行面向对象设计时要尽量考虑接口封装机制、抽象机制和多态技术。(该原则同样适合于非面向对象设计的方法,是软件工程设计方法的重要原则之一)
以收音机的例子为例,讲述面向对象的开闭原则。我们收听节目时需要打开收音机电源,对准电台频率和进行音量调节。但是对于不同的收音机,实现这三个步骤的细节往往有所不同。比如自动收缩电台的收音机和按钮式收缩在操作细节上并不相同。因此,我们不太可能针对每种不同类型的收音机通过一个收音机类来实现(通过重载)这些不同的操作方式。但是我们可以定义一个收音机接口,提供开机、关机、增加频率、降低频率、增加音量、降低音量六个抽象方法。不同的收音机继承并实现这六个抽象方法。这样新增收音机类型不会影响其它原有的收音机类型,收音机类型扩展极为方便。此外,已存在的收音机类型在修改其操作方法时也不会影响到其它类型的收音机。
2.里氏代换原则 LSP 如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有对象o1都代换成o2时,程序P的行为没有变化,那么类型T2是T1的子类型。
LSP要求凡是基类使用的地方,子类型一定适用。
LSP是一条非常严格的原则,要求基类变为子类的时候,其程序行为不发生改变。在oop时并没有严格按照LSP来做。
3.依赖倒转原则 DIP 表述1:抽象不应当依赖于细节,细节应当依赖于抽象。
Abstractions should not depend upon details, details should depend upon abstractions.
表述2:要针对接口编程,不要针对实现编程。
Program to an interface, not an implementation.
4.接口隔离原则 ISP 使用多个专门的接口比使用单一的总接口要好。
一个类对另一个类的依赖性应当是建立在最小接口上的(LoD)。
5.合成/聚合复用原则 CARP = 合成复用原则 Composite Reuse Principle CRP
要尽量使用合成/聚合,尽量不要使用继承。
继承的优点:①新类易实现. ②易修改或扩展
缺点:①继承复用破环包装,白箱复用.
②超类发生变化,子类不得不改变.
③继承的实现是静态的,不能在运行时改变.
优缺点的②是相互对应的。
6.迪米特法则 LoD = 最少知识原则 Least Konwledge Principle
一个对象应当对其他对象有尽可能少的了解。
表述:
①只与你直接的朋友们通信 Only talk to your immediate friends
②不要跟陌生人说话 Don's talk to strangers
③每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
LoD的实质是控制对象之间的信息流量,流向及信息的影响。
①优先考虑将一个类设置成不变类.
②尽量降低类/成员的访问权限.
7.单一职责原则(Single Responsibility Principle)就是一个设计或实体应该只做一件事/只描述一个事物, 而不要弄得很混乱, 如果你专著于一件事, 一个模块,你会做得很出色。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
面向对象编程的四个基本原则 1、开放封闭原则 2、依赖倒置原则 3、接口分离原则 4、Liskov替换原则
面向对象是编程的规范.类和类之间的以来、关联、聚合、组合关系,面向对象设计原则。
自己做的关于OOP设计原则的PPT!需要的可以下载
C#OOP电影院C#OOP电影院C#OOP电影院C#OOP电影院
Java23种设计模式和OOP5种设计原则,祝大家学习愉快。
JavaOOP面向对象,JavaOOP面向对象,JavaOOP面向对象,JavaOOP面向对象,JavaOOP面向对象,JavaOOP面向对象,
java oop,适合小白。
javaoop javaoop阶段项目 javaoop阶段项目 javaoop阶段项目
oop与javascript oop与javascript oop与javascript
公司内部培训资料 oop实践
oop
C#OOP上机练习-Chapter7田超凡.zip
浙江大学OOP大程 C++ 五子棋设计 MFC
本文将主要涉及三种面向对象语言:Internet上最流行的语言Java,最常见的OOP语言C++,以及Borland公司用于他们的集成开发环境Delphi中的Object Pascal。这三种语言具有很多相同点。本文将从多个技术角度对这三种语言...
OOP详细代码 菜鸟们可以来观看一下哦!
非常好的,强大的C#OOP思想学习技术总结
javascript oop模式讲解,内容丰富充实,包含dom(一个todolistshi实例)操作。
OOP的未来.pdf
浙江大学oop(面向对象程序设计)历年考题(英文版) 包含答案
oop面向设计源代码oop面向设计源代码oop面向设计源代码oop面向设计源代码