java开发之消除冗余代码的3种方法

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

一.利用工厂模式+模板方法模式

我们以做蛋糕为例来演示如何消除重复代码。

假设我们要做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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春日安然

可以赏个鸡腿吃嘛~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值