策略模式

2017-12-11  本文已影响0人  tallfish

定义

策略模式是一种定义一系列算法的方法。从概念上看,这些算法都完成同样的工作,只是实现有所不同,策略模式可以使用同一个方法,调用不同的算法,达到了解耦的效果。

实现

我们以一个人的娱乐方式做一个例子。娱乐分很多种,可以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
上一篇下一篇

猜你喜欢

热点阅读