背景
团队协作不管在现实还是虚拟世界中,都有着至关重要的作用。在SRW中,单打独斗显然是不可行的,队友的协助才能够更好的在机战的世界生存。
机战有一种机制,叫做援助防御,当我方机体遭受攻击时,邻接机体能够挺身而出,代替该机体挨打~。我想,援助防御的行为可以使用代理模式来实现。
代理模式分为三种:静态代理、jdk动态代理和cglib动态代理,现在我就分别来实现这个功能。
接口和实现类
接口:处理攻击的行为:回避、挨打和防御
/**
* 面对敌人的攻击,我们有三种行为:回避、挨打和防御
* 注:
* 回避:完全回避敌人的攻击,不受伤害
* 挨打:受到敌人的攻击
* 防御:受到敌人的攻击,但是伤害没有挨打那么大
*/
public interface IHandleAttack {
/**
* 回避
*/
public void avoid();
/**
* 挨打
*/
public void sufferAttack();
/**
* 防御
*/
public void defense();
}
实现类:古铁处理攻击的方式
public class AncientIronHandleAttack implements IHandleAttack {
@Override
public void avoid() {
System.out.println("我完美的回避了这一击~~");
}
@Override
public void sufferAttack() {
System.out.println("反正我血厚得很,尽管打我~~");
}
@Override
public void defense() {
System.out.println("给敌人点面子,还是防御一下吧~~");
}
}
使用静态代理
静态代理类:需要实现IHandleAttack接口
/**
* 援助防御代理类
* 注:援助防御是游戏的一种机制,简单说就是:当兄弟受到攻击时,挺身而出,帮兄弟挡一刀
*/