背景
机战中,机体在使用过程中难免会损耗,当损耗到一定程度时,机体就无法正常运作,影响作战的效率。每支作战部队都有一支后勤修理队,职责是对机体进行修理。正常的修理分为两种:Hp修理(Hp就是血量的意思)和En修理(En就是能量的意思)。我们来看看后勤修理队是怎么帮助机体恢复生命力的吧!
实现
机体抽象类
public abstract class Robot {
private MainTain mainTain;
public MainTain getMainTain() {
return mainTain;
}
public void setMainTain(MainTain mainTain) {
this.mainTain = mainTain;
}
/**
* 修理机体
*/
public abstract void repair();
}
古铁
public class AncientIron extends Robot {
@Override
public void repair() {
super.getMainTain().mainTain();
}
}
修理接口
/**
* 维修接口
*/
public interface MainTain {
/**
* 维修
*/
void mainTain();
}
Hp修理
public class HpMainTain implements MainTain {
@Override
public void mainTain() {
System.out.println("补充HP。满血复活!");
}
}
En修理
public class EnMainTain implements MainTain {
@Override
public void mainTain() {
System.out.println("补充能量。扶我起来,我还可以再战两年!");
}
}
测试
public class Test {
public static void main(String[] args) {
Robot robot = new AncientIron();
System.out.println("古铁HP不足,赶紧补血!");
robot.setMainTain(new HpMainTain());
robot.repair();
System.out.println("---------------------");
System.out.println("古铁能量不足,赶紧补能量!");
robot.setMainTain(new EnMainTain());
robot.repair();
}
}
测试结果
古铁HP不足,赶紧补血!
补充HP。满血复活!
---------------------
古铁能量不足,赶紧补能量!
补充能量。扶我起来,我还可以再战两年!
总结
上面的例子是不是跟策略模式很像?博主我也对桥接模式和策略模式傻傻分不清。桥接模式关注的是抽象与实现的解耦,策略模式是为了方便替换算法。针对这个例子,我的理解是,如果改成策略模式,应该对怎么补充Hp进行多种算法的实现。比如:快速补充Hp,正常补充Hp或者高效补充Hp。