面向对象设计之Ruby #W06

这篇文章是我读 《面向对象设计实践指南 Ruby语言描述》的笔记。

 面向对象

面向对象思想认为世界是多个对象之间的一系列消息传递构成。它将行为封装在对象内部,通过在对象之间进行消息传递来实现系统的运作。(好抽象,期待后面能更加深入理解其本质)

单一职责

1.为什么要单一职责?

单一职责的目的是主要有以下几点:

  • 让代码易于重用。当某个方法处理多个职责的时,若其中部分职责有重用需求时,无法简单的重用该方法。
  • 职责清晰的代码更容易修改,在面对变化的需求时,能做出更少的改动。
  • 易于移动和重构
  • 分离职责的行为,可以在很大程度上减少不必要的相互依赖。

专注于一件事情,承担独立的职责。

管理依赖关系

1.什么是依赖关系

依赖关系常见于对象与对象之间,当对象之间有依赖关系时,也称作 “耦合”。当某个对象发生变化之后,和它有依赖关系的对象也必须跟着变化,而且这往往是一个链式反应,会触发所有有依赖的对象被迫发生改变,所谓牵一发而动全身。

2.如何减少依赖关系

依赖关系在对象之间无法避免,只能在最大程度上减少不必要的依赖关系,同时将依赖关系放到变化更少的地方。当变化发生的时候,减少依赖关系触发更多的被迫变化。主要有以下几种方式:

  • 注入依赖关系。将依赖关系从内部抽离出来进行包裹,使其在对象间透明。
  • 隔离依赖关系。当依赖关系难以避免的产生时,需要将其隔离在对象内部,常见的做法就是将其隔离在某一个方法中,当需要引用这个依赖关系时,通过调用封装的方法,达到隔离的目的。
  • 引导依赖的方向。一切的目的都是为了能更好的拥抱变化,将依赖关系放到变化更少的对象中,调整依赖的方向。也就是让经常变化的对象依赖与少的对象,而不是让经常变化的对象被依赖。这样,当变化发生在经常变化的对象上时,不会触发连锁反应。

创建接口

接口是对象间传递消息的通道,对象通过这些通道获取消息,然后执行消息对应的相关指令,这就是应用程序工作的方式。

创建好的接口应该注意以下几点:

  • 通过要传递的消息来建立对象及其接口。基于消息建立对象。
  • 信任接受消息的对象,只告诉它“我想要什么”,不去指导它怎么做
  • 遵循迪米特法则,不要使用链式调用,穿透多个对象获取信息

待续。。。

猜你喜欢

转载自blog.csdn.net/u012671917/article/details/79886741
今日推荐