这篇文章是我读 《面向对象设计实践指南 Ruby语言描述》的笔记。
面向对象
面向对象思想认为世界是多个对象之间的一系列消息传递构成。它将行为封装在对象内部,通过在对象之间进行消息传递来实现系统的运作。(好抽象,期待后面能更加深入理解其本质)
单一职责
1.为什么要单一职责?
单一职责的目的是主要有以下几点:
- 让代码易于重用。当某个方法处理多个职责的时,若其中部分职责有重用需求时,无法简单的重用该方法。
- 职责清晰的代码更容易修改,在面对变化的需求时,能做出更少的改动。
- 易于移动和重构
- 分离职责的行为,可以在很大程度上减少不必要的相互依赖。
专注于一件事情,承担独立的职责。
管理依赖关系
1.什么是依赖关系
依赖关系常见于对象与对象之间,当对象之间有依赖关系时,也称作 “耦合”。当某个对象发生变化之后,和它有依赖关系的对象也必须跟着变化,而且这往往是一个链式反应,会触发所有有依赖的对象被迫发生改变,所谓牵一发而动全身。
2.如何减少依赖关系
依赖关系在对象之间无法避免,只能在最大程度上减少不必要的依赖关系,同时将依赖关系放到变化更少的地方。当变化发生的时候,减少依赖关系触发更多的被迫变化。主要有以下几种方式:
- 注入依赖关系。将依赖关系从内部抽离出来进行包裹,使其在对象间透明。
- 隔离依赖关系。当依赖关系难以避免的产生时,需要将其隔离在对象内部,常见的做法就是将其隔离在某一个方法中,当需要引用这个依赖关系时,通过调用封装的方法,达到隔离的目的。
- 引导依赖的方向。一切的目的都是为了能更好的拥抱变化,将依赖关系放到变化更少的对象中,调整依赖的方向。也就是让经常变化的对象依赖与少的对象,而不是让经常变化的对象被依赖。这样,当变化发生在经常变化的对象上时,不会触发连锁反应。
创建接口
接口是对象间传递消息的通道,对象通过这些通道获取消息,然后执行消息对应的相关指令,这就是应用程序工作的方式。
创建好的接口应该注意以下几点:
- 通过要传递的消息来建立对象及其接口。基于消息建立对象。
- 信任接受消息的对象,只告诉它“我想要什么”,不去指导它怎么做
- 遵循迪米特法则,不要使用链式调用,穿透多个对象获取信息
待续。。。