一.利用工厂模式+模板方法模式
我们以做蛋糕为例来演示如何消除重复代码。
假设我们要做3种不同口味的蛋糕,分别是抹茶,可可和草莓蛋糕,实际上3种蛋糕的制作方法是极其相似的,只有添加的粉剂不
同,如果用代码来实现蛋糕制作流程,要写大量重复代码,容易产生BUG,我们可以使用工厂模式和模板方法模式来避免重复。
首先定义一个蛋糕类Cake:
@Data
public class Cake {
// 蛋糕名称
String cakeName;
Integer sugar;
Integer eggs;
Integer flour;
// 添加剂(可可粉,抹茶粉,草莓)
String supplement;
}
再定义一个制作蛋糕的抽象父类:
@Service
public abstract class AbstractCakeService {
//处理做蛋糕的重复逻辑在父类实现
public Cake doCake(){
Cake cake = new Cake();
cake.setEggs(2);
cake.setFlour(250);
cake.setSugar(30);
//让子类实现不同的蛋糕处理
addOtherMaterial(cake);
return cake;
}
// 不同属性的赋值留给子类实现
protected abstract void addOtherMaterial(Cake cake);
}
我们定义3个不同的子类:抹茶蛋糕,可可蛋糕,草莓蛋糕制作,他们都继承抽象的父类AbstractCakeService,分别为
TeaCakeService,CocoaCakeService,StrawberryCakeService。
抹茶蛋糕TeaCakeService的实现:
@Service(value = "TeaCakeService")
public class TeaCakeService extends AbstractCakeService{
@Override
protected void addOtherMaterial(Cake cake) {
cake.setCakeName("抹茶蛋糕");
cake.setSupplement("抹茶粉");
System.out.println("当前正在制作好吃的抹茶蛋糕");
}
}
可可蛋糕CocoaCakeService的实现:
@Service(value = "CocoaCakeService")
public class CocoaCakeService extends AbstractCakeService{
@Override
protected void addOtherMaterial(Cake cake) {
cake.setCak

本文介绍了三种在Java开发中消除冗余代码的方法:1) 利用工厂模式+模板方法模式,通过Spring容器实现接口调用,避免重复代码;2) 结合注解+反射,为接口参数添加元数据,实现接口定义和参数说明的自动化;3) 使用属性拷贝工具如BeanUtils或Hutool进行对象间的属性转换,减少手动赋值错误。
最低0.47元/天 解锁文章
6788

被折叠的 条评论
为什么被折叠?



