介绍
策略模式似乎是所有设计模式中最简单的,然而它为你的代码提供了极大的灵活性。这个模式到处都用,而且还会连接其它模式使用。我们学过的其它模式都或多或少的与该模式有关。
要理解策略模式,我们会设计一个文本格式化器用于文本编辑器。我们会创建不同的文本格式化器,供文本编辑器对不同文本做相应的格式化。
什么事策略模式
策略模式定义了一个算法族,每一个算法为一个个体,使它们可以相互替换。策略模式使得算法独立于使用它们的客户端。
当有一组相关的算法时而且需要客户端对象根据需要动态的选择它们时,策略模式是很有用的。策略模式建议我们将每一个算法保存在一个独立的类里面。每一个这样的类被认为是一个策略,而是用这些策略的对象被叫做上下文。
当拥有不同策略对象时,改变上下文对象的行为,就是简单的替换不同的策略对象,因此,为了实现策略的互换性,所有策略对象必须具有统一的接口。在java中,要实现每一个策略对象,就让他们实现相同的策略接口,或继承自同一个策略类。
一旦有了一组策略以后,客户端就可以在这里面选择,要修改上下文的行为,就给它配置不同的策略对象。这就将具体算法与使用它的上下文分离开了。因此,当某个算法改变了,或添加了新的算法,我们的上下文和客户端都不会受影响。