设计模式之策略模式

策略模式

策略模式UML.png
interface Hero{
    void kaida();
}

英雄接口,开大。

class SunWuKong implements Hero{
    public void kaida(){
        //孙悟空开大
    }
}   

英雄孙悟空,实现开大方法

class DianWei implements Hero{
    public void kaida(){
        //典韦跳大
    }
}

英雄典韦,实现开大方法

class Military{
    private Hero hero;
    public Military(Hero hero){
        this.hero = hero;
    }
    
    public void kaida(){
        if(hero != null){
            hero.kaida();               
        }
    }
}

军师类,军师职责是挑选合适的英雄去开大,就是这样

class Client{
    Hero hero = new SunWuKong();
    Military mMilitary = new Military(hero);
    mMilitary.kaida();
}

客户端,这边选择的是孙悟空去开大,根据不同需求在运行时指定不同英雄,交给军师,让其开大

个人总结

策略模式给我感觉是一种,想做一件事情,这事情有很多种解决途径,有对的有错的,这些途径就是策略类(例子中的孙悟空,典韦),关键难点在于客户端如何抉择,这个是一个难点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、什么是策略模式 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,...
    雅俗共赏M阅读 467评论 0 0
  • 在日常开发过程中时常需要用到设计模式,但是设计模式有23种,如何将这些设计模式了然于胸并且能在实际开发过程中应用得...
    AntDream阅读 3,592评论 3 7
  • 策略模式 1.定义: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法...
    TangBuzhi阅读 219评论 0 0
  • 策略模式定义 定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。策略模式模式使得算法可独立于使用它的...
    Leon_hy阅读 138评论 0 1
  • 年青时候的妈妈, 长得真是好看。 连姥姥也会忍不住地夸奖自己的女儿, 姥姥说, 当时你妈妈一米多长的麻花辫, 走起...
    吕沐霏阅读 781评论 2 2