一,还在用传统业务模型么?
1.从一个小需求开始
首先提一个小需求,我用传统的编码方式完成它。
做一个用户注册系统,同时希望在用户注册后能够通过用户电话(先假设仅限座机)的地域(区号)对业务员发奖金。
public class User{
Long UserId;
String name;
String phone;
String address;
Long repId;
}
public class UserService{
private SalesRepRepository salesRepRepository;
private User Repository;
public User register(String name ,String phone , String address){
//检验逻辑
if(name == null || name.length == 0){
throw new Exception("注册用户名不能为空!")
}
//此处省略校验电话号,地址逻辑
//取电话号里面的区号,然后通过区号找到区域内的SalesRep
String areaCode=null;
String[] areas = new String[]{
"0571", "021", "010"};
for (int i = 0; i < phone.length(); i++) {
String prefix = phone.substring(0, i);
if (Arrays.asList(areas).contains(prefix)) {
areaCode = prefix;
break;
}
}
SalesRep rep = salesRepRepository.findRep(areaCode);
//最后创建用户,落盘,然后返回
User user = new User();
user.name=name;
user.phone=phone;
user.address=address;
if(rep!=null){
user.repId = rep.repId;
return userRepo.save(user);
}
}
咋一看这段代码毫无问题,参数进行了检验,业务逻辑还算合理,最终落盘完成了需求。真的是这样么?转备好,接下来,我要开始挑刺儿了。
2.需求分析
我们日常大部分业务代码和模型其实都是跟这个是类似的,貌似我从接触代码的第一天起,就觉得代码应该这样写,直到我看了阿里技术专家团队的文章,只是感觉我的传统思想被打破了,为我打开了一扇新的大门。
从以下