最近工作不是很多,正好抽出时间学习一下期待已经的设计模式,作为一名刚毕业一年的开发人员更应该多抽出些时间了解一下设计模式。
此片文章对策略模式做一个总结,希望对大家有帮助。
(题外话:策略模式之前只是看定义和一些简单的例子,根本不明白,最后一头雾水,不过下面这个小例子还挺有趣的哦,能很好的理解到底什么是策略模式。)
一.案例
设计一个动作冒险类游戏,游戏大概是这样的:游戏中有不同的角色,每个角色战斗时使用的武器不同。现有两个角色:骑士(Knight)和巨魔头(Troll),Knight的武器是宝剑(Sword),巨魔头的武器是斧头(Axe);作战规则,先确定身份,使用武器作战,最后停止作战。
1.分析:
Knight和Troll都是角色,所以可以定义一个超类Character;
确定角色身份,使用武器,作战,停止作战都作为Character类具有的方法:
(1)每个角色的身份,使用武器作战的方式不同,所以在Character中定义为抽象方法(abstract),在子类Knight和Troll中具体实现;
(2)而停止作战就是一个停止动作,所以直接在character中实现由子类继承即可。
2.按照如上分析代码实现(体现了基本的OO设计原则:继承、抽象):
角色类(超类):public abstract class Character {
public abstract void identify();
public abstract void fight();
public void stopFight(){
System.out.println("Hi,stop fight and go to sleep,now");
}
}
骑士类(子类):public class Knight extends Character{
//实现父类的接口
public void identify() {
System.out.println("Hi