《敏捷软件开发原则,模式与实践》阅读笔记三

敏捷

常用设计模式

4.1.1 Command模式的优点

  1. 通过对命令概念的封装,可以解除系统的逻辑互联关系和实际连接的设备之前的耦合。
  2. 另一个Command模式的常见用法是创建和执行事务操作。
  3. 解耦数据和逻辑,可以将数据放在一个列表中,以后再进行实际的操作。

4.1.2 Active Object模式

描述

Active Object模式是实现多线程控制的一项古老的技术。 控制核心对象维护了一个Command对象的链表。用户可以向链表中增加新的命令,或者调用执行动作,该动作只是遍历链表,执行并去除每个命令。

RTC任务

采用该技术的变体一去构建多线程系统已经是并且将会一直是一个很常见的实践。这种类型的线程被称为run-to-completion任务(RTC), 因为每个Command实例在下一个Command补全可以运行之前就运行完成了。RTC的名字意味着Command实例不会阻塞。

共享运行时堆栈

Command实例一经运行就一定得完成的的赋予了RTC线程有趣的优点,寻就是它们共享同一个运行时堆栈。和传统的多线程中的线程不同, 不必为每个RTC线程定义或者分配各处的运行时堆栈。这在需要大量线程的内存受限系统中是一个强大的优势。

4.2 Template Method模式和Strategy模式:继承和委托

4.2.1 Template Method模式

描述

Template Method模式展示了面向对象编程上诸多经典重用形式中的一种。其中通用算法被放置在基类中, 并且通过继承在不同的具体上下文实现该通用算法。

代价

继承是一种非常强的关系,派生类不可避免地要和它们的基类绑定在一起。

4.2.2 Strategy模式

描述

Strategy模式使用了一种非常不同的方法来倒置通用算法和具体实现之间的依赖关系。不是将通用的应用算法放进一个抽象基类中, 而是将它放进一个具体类中,在该具体类中定义一个成员对象,该成员对象实现了实际需要执行的具体算法, 在执行通用算法时,把具体工作委托给这个成员对象的所实现的抽象接口去完成。

4.2.3 对比

共同点

Template Method模式和Strategy模式都可以用来分离高层的算法和的具体实现细节,都允许高速的算法独立于它的具体实现细节重用。

差异

Strategy模式也允许具体实现细节独立于高层的算法重用,不过要惟一些额外的复杂性、内存以及运行时间开销作为代价。