美文网首页
策略模式

策略模式

作者: tallfish | 来源:发表于2017-12-11 13:01 被阅读0次

    定义

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

    实现

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

    相关文章

      网友评论

          本文标题:策略模式

          本文链接:https://www.haomeiwen.com/subject/hhdiixtx.html