不知怎么实现主业务代码和判断的分离

来源:19-3 策略模式源码解析(jdk+spring)

alexnest3882392

2018-12-19

老师,平时代码中很多时候实现主逻辑之前先要做下非空校验和一些逻辑校验,然后再实现主要的业务逻辑代码,但校验方法的代码中又会获取一些对象是主逻辑代码中要用到的,怎么才能优雅的实现校验方法与主业务逻辑分开。例如下面这段代码

public class ArticleAction{
	public void updateArtile(Article article){
		if(verify(article)){
			dao.save(article);
		}
		//下面还有些操作会用到 category  这个对象,但校验的时候已经拿了一次,而且前台传过来的categoryId又有可能为空,需要先对categoryId做校验。像这种情况,有什么方法可以优雅地把主业务代码和判断分开?
		...
	}
	
	private boolean verify(Article article){
		if(article.getCategoryid == null){
			return false;
		}
		//该类别下的书籍不能低于几元,否则不让保存
		Category category = getCategoryByArticleId(article.getId());
		if(category.getLimetedPrice() < article.getPrice()){
			return false;
		}
		return true;
	}
	private Category getCategoryByArticleId(String articleId){
		Category category = ...;
		return category;
	}
}
写回答

1回答

Geely

2018-12-24

你好,同学  对于这种校验的的逻辑,看看可否封装成private的方法,供重用。因为不同的service实现里面校验的东西,逻辑也是不一样的,把公共的可重用的抽取出来。

0
0

Java设计模式精讲-Debug方式+内存分析

系统学习设计原则,设计模式,锤炼编码内功,赢取高薪Offer

3430 学习 · 407 问题

查看课程