在处理几个相似业务时,我们往往采用策略模式去构建我们的代码。每个业务定义一个处理类,还会有一些通用的处理,我们可以把他们放到抽象类中。
在Spring框架下,抽象类(abstract)也可以注入Bean。我们的业务类继承这个抽象类,在需要用到这些通用的处理时,调用下即可。
下面举一个例子,用不同武器攻击敌人,并把攻击结果保存到数据库。
接口:
java
public interface Attack {
boolean attackEnemy(Info info);
}
抽象类:
typescript
@Slf4j
public abstract class AbstractAttack implements Attack{
@Resource
private SaveResultService saveResultService;
/**
* 通用处理,保存攻击结果
* @param result
* @return
*/
public boolean saveResult(Result result) {
return saveResultService.save(result);
}
}
用手榴弹攻击
scala
@Service
public class FragAttack extends AbstractAttack{
@Override
public boolean attackEnemy(Info info) {
//1.启动攻击任务
//2.保存攻击结果
super.saveResult(result);
return false;
}
}
OK,演示到此结束,你学费了吗