移动开发设计模式Android开发经验谈Android开发

设计模式系列之「策略模式」

2017-10-26  本文已影响1701人  YoungManSter

欢迎收看俗到掉渣的《小Y讲堂》节目,大家好,我是小Y,一个集性感毛发与才华于一身的程序猿......小Y上一篇写的是设计模式系列之「状态模式」,这篇小Y要介绍它的孪生兄弟——策略模式

一、策略模式的概念

策略模式定义

定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。

使用的场景
角色介绍
策略模式通用UML

二、案列实现

小Y最近在玩比较有情怀的经典游戏魂斗罗.归来,看着熟悉的场景,心里感慨万分,以前只是想着怎么样才能开挂式地打爆机,现在玩起来更多的是回味经典和享受运用不同的策略闯过不同的关卡的快感。小Y在选择角色的时候最喜欢使用比尔·雷泽这个口叼雪茄的粗狂肌肉男,同时不同的对战模式采取不同的武器。

不同对战模式采取不同武器装备

tell me why?

Ok,please keep looking!

1.不同对战模式采取不同武器的UML图

①武器切换接口

public interface IWeaponStrategy {  
    public void operate();
}  

②1vs1对战模式

public class OnetoOneFight implements IWeaponStrategy {  
    public void operate() {  
        System.out.println("狙击枪+喷射器:1vs1关键就是能够快速的对对方造成大量的伤害,狙击枪和喷射器都是高伤害的武器。"); 
    }
}   

③3vs3对战模式

public class ThreetoThreeFight implements IWeaponStrategy {  
    public void operate() {  
        System.out.println("炮类+突击步枪:3vs3需要有着高伤害的范围攻击,从而压制对手占领据点,炮类伤害大,突击步枪也能弥补炮类换弹速度慢的劣势。"); 
    }
}

④关卡对战模式

public class BarrierFight implements IWeaponStrategy {  
    public void operate() {  
        System.out.println("机关枪+突击步枪:关卡模式中,小兵比较多,但是时常也得面对BOSS的突袭,因此选择能力较为均衡的武器是比较好的选择。"); 
    }
}

⑤对战模式

public class Context {    
    //构造函数,你要使用玩那种模式  
    private IWeaponStrategy straegy;  
    public Context(IWeaponStrategy strategy){  
        this.straegy = strategy;
    }
    //根据不同模式装备不同武器
    public void operate(){  
        this.straegy.operate();  
    }  
}

⑥使用不同武器

public class BillRizer {   
    //比尔.雷泽出场了,他根据不同模式选择了不同的武器  
    public static void main(String[] args) {  
        Context context;  
        //1vs1对战
        context = new Context(new OnetoOneFight());
        context.operate(); 
        //3vs3对战模式    
        context = new Context(new ThreetoThreeFight());  
        context.operate();   
        //关卡对战模式  
        context = new Context(new BarrierFight());  
        context.operate(); 
    }  
}

输出的结果为:

①狙击枪+喷射器:1vs1关键就是能够快速的对对方造成大量的伤害,狙击枪和喷射器都是高伤害的武器。
②炮类+突击步枪:3vs3需要有着高伤害的范围攻击,从而压制对手占领据点,炮类伤害大,突击步枪也能弥补炮类换弹速度慢的劣势。
③机关枪+突击步枪:关卡模式中,小兵比较多,但是时常也得面对BOSS的突袭,因此选择能力较为均衡的武器是比较好的选择。

小Y还要继续努力,争取能够早日打爆机。。。。

三、总结分析

看到策略模式很多小伙伴会发现跟状态模式有所混淆,下一篇小Y会对这两种模式进行对比,请期待!!!!

Android技术交流吧
上一篇 下一篇

猜你喜欢

热点阅读