定义
策略模式是一种定义一系列算法的方法。从概念上看,这些算法都完成同样的工作,只是实现有所不同,策略模式可以使用同一个方法,调用不同的算法,达到了解耦的效果。
实现
我们以一个人的娱乐方式做一个例子。娱乐分很多种,可以sing、dance、run等。
先定义一个 entertainment 接口,接口只有一个方法 play()
interface Entertainment {
void play();
}
然后又具体娱乐方式去实现这个接口:
class Sing implements Entertainment {
@Override
public void play() {
// do sing
}
}
class Dance implements Entertainment {
@Override
public void play() {
// do dance
}
}
接着,有一个 Person 类,含有 Entertainment 成员变量,并对外提供了设置成员变量方法。我们就可以只通过它改变不用的策略,而调用同一个方法 doSomething() ,来达到我们的目的。
class Person {
Entertainment entertainment;
public Person(Entertainment entertainment) {
this.entertainment = entertainment;
}
public void setEntertainment(Entertainment entertainment) {
this.entertainment = entertainment;
}
public void doSomething() {
entertainment.play();
}
}
UML图是
image.png
网友评论