Java中的策略模式(strategy)完全解析
来源:互联网 发布:c 高级编程视频教程 编辑:程序博客网 时间:2024/06/05 19:25
先给出策略模式的UML图,然后再根据之前很火的一款CS游戏来实例讲解策略模式。
怎样看上面的图呢,现在我们通过CS游戏来分析一下,在玩CS游戏时玩家在不同的场合可能会不断的进行武器的切换,一般有三种武器,刀,手雷,枪。这些武器是如何进行切换的呢,这里就用到了策略模式。
WeaponContext:
public class WeaponContext { WeaponStrategy weapon; public WeaponContext(WeaponStrategy weapon) { this.weapon = weapon; } public void useWeapon() { weapon.weaponAction(); }}
WeaponStrategy:
public interface WeaponStrategy { public void weaponAction();}
Grenade:
public class Grenade implements WeaponStrategy{ @Override public void weaponAction() { // TODO Auto-generated method stub System.out.println("Grenade boom"); }}
Gun:
public class Gun implements WeaponStrategy{ @Override public void weaponAction() { // TODO Auto-generated method stub System.out.println("gun shot"); }}
Knife:
public class Knife implements WeaponStrategy{ @Override public void weaponAction() { // TODO Auto-generated method stub System.out.println("knife kill"); }}
PeopleCs:
public class PeopleCs { private static int i=0; private static WeaponContext weapon; public static void main(String[] args) { // TODO Auto-generated method stub while(i<20) { switch (i%3) { case 0:weapon=new WeaponContext(new Knife()); weapon.useWeapon(); break; case 1:weapon=new WeaponContext(new Grenade()); weapon.useWeapon(); break; case 2:weapon=new WeaponContext(new Gun()); weapon.useWeapon(); break; } i++; } }}
这样cs玩家就可以随心所欲的在三种不同的武器之间切换了,如果用户又增加了不同的武器,也只需要其实现接口WeaponStrategy,然后使用WeaponContext就可以了。
源代码下载地址(eclipse上可直接运行))
0 0
- Java中的策略模式(strategy)完全解析
- java 策略(Strategy)模式
- Java策略模式(Strategy)
- 策略模式(Strategy)解析
- Java策略模式(Strategy)
- Java模式 - 策略模式(Strategy)
- java 设计模式--策略模式(strategy)
- Java设计模式----策略模式(Strategy)
- Java策略模式(Strategy模式)
- 算法设计中的策略(strategy)模式
- java(15)-策略模式(Strategy Pattern)
- JAVA设计模式---策略(strategy)
- 策略模式(Strategy)-----基于JAVA语言
- Java策略模式(Strategy模式)
- 策略(Strategy)模式
- Strategy(策略)模式
- 策略(Strategy)模式
- Strategy(策略模式)
- rsync
- bzoj 1576 [Usaco2009 Jan]安全路经Travel
- IOS开发设置时间为24小时制
- MySQL数据类型介绍
- 20161102的考试】模拟,树的直径,推公式……三道水题然而浪飞了……
- Java中的策略模式(strategy)完全解析
- linux 配置环境变量
- PHPMailer 发送邮件
- iOS开发中使用代码控制横竖屏的切换
- 性能优化1: 能在一个循环内处理的事情,不要分成多个循环
- POJ 1988/bzoj3376[Usaco2004 Open]Cube Stacking 方块游戏
- UIStoryboard的简单封装
- Makefile详解-书写规则
- 2017第一季度计划