敏捷

敏捷软件开发(原则、模式与实践)第三部分 设计模式-读书笔记1

2020-10-26  本文已影响0人  漫行者曰

第十三章 COMMAND模式和ACTIVE OBJECT模式

COMMAND模式:

该模式仅由一个具有唯一方法的接口。它只封装了一个没有任何变量的函数。
通过对命令概率的封装,该模式解除了系统的逻辑互连关系和实践连接的设备之间的耦合。
另一个常见用法:创建和执行食物操作。
COMMAND模式中do()方法:记住它所执行的操作的细节;
增加了undo()方法:取消do()方法中执行的操作,并把系统回复到原先的状态。

ACTIVE OBJECT模式

ACTIVE OBJECT模式是最好使用COMMAND模式的地方之一。是实现多线程控制的技术。
采用ACTIVE OBJECT模式的变体(Variations)去构建多线程系统已经是并一个常见的实践。此类线程被称为run-to-completion任务(RTC)。RTC意味着Command实例不会阻塞。RTC共享同一个运行时堆栈。

COMMAND模式可以应用于多种不同的用途:数据库事务操作、设备控制、多线程核心以及GUI的do/undo管理。

第十四章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托

优先使用对象组合(Object Composition)而不是类继承(Class Inheritance).
本章两个模式,归纳了继承和委托之间的区别。TEMPLATE METHOD模式和STRATEGY模式所需要解决的问题时类似的,常常可互换使用。
TEMPLATE METHOD模式:使用继承来解决问题。
STRATEGY模式:使用委托来解决问题。

TEMPLATE METHOD模式和STRATEGY模式:都可以分离通用的算法和具体的上下文。
为遵循依赖倒置原则(DIP):要确保通用的算法不要依赖于具体的实现。通用的算法和具体的实现都依赖于抽象。

TEMPLATE METHOD模式

该模式:把所有通用代码放入一个抽象基类(Abstract Base Class)的实现方法中。这个实现方法:完成了这个通用算法,但是将所有的实现细节都交付给该基类的抽象方法。

STRATEGY模式

该模式:使用一种非常不同的方法来倒置通用算法和具体实现之间的依赖关系。
不将通用的应用算法放进一个抽象基类中,而是将它放进具体类中。
把通用算法必须调用的抽象方法定义在A接口中。
从这个接口A的派生出strateg类,并把它传给具体类中。之后,具体类就可以把具体工作委托给这个接口A去完成。

TEMPLATE METHOD模式和STRATEGY模式:都可以用来分离高层的算法和低层的具体实现细节。允许高层的算法独立于它的具体实现袭击重用。
STRATEGY模式:也允许具体实现细节独立于高层的算法重用。

第十五章 FACADE模式和MEDIATOR模式

这章的两个模式有着共同的目的:它们都把某种策略施加到另外一组对象上。
FACADE模式:从上面施加策略,使用时明显且受限的。
MEDIATOR模式:从下面施加策略,使用则是不明显且不受限制的。

FACADE模式

该模式:当想要为一组具体复杂且全面的接口的对象提供一个简单且特定的接口时,运用。
Facades通常是约定的关注点,每个人都同意去使用该facade而不是隐藏于其下的对象。

MEDIATOR模式

该模式:以隐藏且不受限的方法来施加它的策略。如果策略隐藏且有针对性,用MEDIATOR模式是更好的选择。
Mediator则对用户是隐藏的,它的策略是既成事实的而不是一项约定事务。

第十六章 SINGLETON模式和MONOSTATE模式

SINGLETON模式

该模式:实例是通过公有的静态方法Instance访问的。即使被多次调用,每次返回的都是指向完全相同的实例的引用。

SINGLETON模式的好处

SINGLETON模式的代价

MONOSTATE模式

该模式:是另外一种获取对象单一性的方法。

** MONOSTATE模式的好处**

** MONOSTATE模式的代价**

SINGLETON模式:强制结构上的单一性,它放置创建多个对象实例;
MONOSTATE模式:强制行为上的单一性,而没有强加结构方面的限制。

MONOSTATE类的测试用例对SINGLETON类是有效的,但是SINGLETON的测试用例不适用于MONOSTATE类。

SINGLETON模式:使用私有构造函数,一个静态变量,以及一个静态方法对实例化进行控制和限制。
MONOSTATE模式:只是简单地把对象的所有变量变成静态的。

如果希望透过派生类去约束一个现存类,并且不介意它的所有调用者都必须要调用instance()方法来获取访问权,用SINGLETON模式最适合。
如果希望类的单一性本质对使用者透明,或希望使用单一对象的多态派生对象,用MONOSTATE模式最适合。

第十七章 NULL OBJECT模式

该模式:消除对null进行检查的需要,并且有助于简化代码。
通过NULL类实现了接口中的所有方法,但方法中“什么也没做”。“什么也没做”的含意和具体的方法有关。

上一篇 下一篇

猜你喜欢

热点阅读