微服务接口设计的思路---java接口约束的现状思考

本文讨论了微服务接口设计中的问题和解决方案,包括接口约束、兼容性、可读性和可维护性。通过案例分析了用户信息接口的变化,提出使用DTO、通用数据结构和接口版本控制等方式来应对接口变更带来的挑战。同时,指出了不同处理方法的优缺点,强调了在接口设计时要考虑长期的维护成本和客户端的调用体验。
摘要由CSDN通过智能技术生成

此篇文章在未探究thrift等跨语言服务调用下编写

接口在我的概念里不仅仅是对外暴露的一种手段,其实也是一种约束。微服务中倡导的去中心化过程中,接口的约束越来越重。比如有以下的接口:

public interface UserService{
    
    /**
     * 根据名称生成一个用户
     */
    User createUser(String name);
}

后面随着需求的变更,开始变为了根据用户名称和年龄生成一个用户,为了兼容之前的接口,那么新建一个方法即可,具体如下

public interface UserService{
    
    /**
     * 根据名称生成一个用户
     */
    User createUser(String name);
    
    /**
     * 根据用户名称和年龄生成一个用户
     */
    User createUser(String name, Integer age);
}

试想,如果再加入用户邮箱、用户地址、用户手机号,按照排列组合的全排列的方式,那么会有5! = 5 * 4 * 3 * 2 * 1 = 120个方法。岂不是boom

那么有以下设计接口的方式,将封装成一个对象

public interface UserService{
    
    /**
     * 根据用户生成一个用户
     */
    User createUser(User model);
}

仿佛世界和平了

但是这样在每一次客户端调用的时候,判断用户是否创建成功都会有如下的代码

User result = userService.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值