面向对象的六大原则


相关文章:

  1. 一篇搞懂OOA/OOD/OOP的区别
  2. 面向对象的基本原则-抽象,封装,继承,分解
  3. GRASP模式概述
  4. 面向对象的六大原则

面向对象的六大原则是我们可以写出高扩展性,可读性强,易于维护的代码的基础。

面向对象的六大原则如下:

  • 单一职责原则
  • 开闭原则
  • 里氏替换原则
  • 依赖倒置原则
  • 接口隔离原则
  • 迪米特原则

单一职责原则

定义:对一个类而言,应该仅有一个引起它变化的原因。

说明:一个类应该是相关性很高的封装,类只实现一个功能。

补充:对于单一职责,定义类的职责是最大的问题,如何判定某个职责属于某个类呢?我们可以通过另一个GRASP中的来去间接说明职责分配的问题。那就是GRASP中的信息专家,
* 信息专家(Information Expert)
* 问题:给对象分配职责的基本原则是什么?
* 解决方案:把职责分配给具有完成职责所需信息的类。

开闭原则

定义:软件中的对象应该对于扩展是开放的,对于修改是关闭的。

说明:当软件需要变化时,我们尽可能的通过扩展的方式来实现变化,比如通过继承,通过装饰者模式来增加新的功能,而不是通过修改已有的接口来实现,一旦修改接口,上层调用的地方均需要修改。

补充:在我们设计的时候也要多多考虑如何避免这种变异。在GRASP中有个是防止变异

防止变异(Protected Variations)
问题:如何设计对象,子系统和系统,使其内部的变化或不稳定性不会对其他元素产生不良影响?
解决方案:识别变化或不稳定的地方,分配职责用以在变化地方创建稳定的接口。

里氏替换原则

定义:所有引用基类的地方都能替换为其子类的对象。

说明:也就说父类出现的地方,可以无条件地替换为子类。

补充:这里设计到了多态,通过多态来让行为可以替换.

多态性(Polymorphism)
问题:如何处理基于类型的选择?如何创建可插拔的软件构件?
解决方案:当相关选择或行为随类型有所不同时,使用多态操作为变化的行为分配职责。

依赖倒置原则

定义:高层次的模块不依赖低层次模块的具体细节,而应该依赖抽象。
说明:

  • 高层次模块不应该依赖低层次的模块,二者都应该依赖其抽象
  • 抽象不应该依赖细节
  • 细节应该依赖抽象。
    *这里涉及了GRASP中的低耦合,高内聚。

接口隔离原则

定义:类的依赖关系应该建立最小的接口上。不应该依赖不需要的接口。

说明:比如我们期望关闭FileInputStream时,我们应该依赖Closeable,而不应该依赖FileInputStream。

补充:GRASP中的低耦合。

迪米特原则

定义:此原则又叫作最少知识原则,就是说一个对象应当对其他对象有尽可能少的了解,尽可能不暴露具体的实现细节。

说明:比如直接访问类里面的属性。

补充:不和陌生人说话。GRASP中低耦合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值