我理想中的java编码规范
util包: util类的集合。一个util类包含一组功能(通用功能),全部是静态方法,普通类。
service包: service类的集合。一个service类包含一组功能(偏业务的功能),单例,并且被spring容器管理,拥有spring提供的功能。其实就是带业务的util类。和controller相比,专注功能处理。
controller包:controller类的集合。一个controller类和一个service类的方法一一对应,它的作用是接收外部进来的各种类型的数据(比如 a=1&b=2格式或json格式或字节流格式),并指定返回数据的类型(比如返回html格式或json格式或字节流格式)。单例,并且被spring容器管理,拥有spring提供的功能。和service相比,专注出入参数类型的转换。
request包:对象类的集合,单个类应包含属性和业务方法,属性用来接收入参,方法用来执行操作。一个对象类只做一件事。对象类的public方法有三个,validate(无参):验证入参,execute(无参):执行操作,init(参数一,参数二,…):接收controller之外的入参。事例:用户新增操作,在controller类中有个UserInsert入参, 这个对象的新建由spring完成,contrlloer将入参UserInser对象传到service类。在service类中写 JSONObject result = userInsert.init(userMapper).insert();
service类是否需要新建接口,请参考这个回答。https://blog.csdn.net/k0101jcj/article/details/104184274
当controller类无法被修改情况下(比如将代码提供给第三方),若controller类使用的是service的接口,第三方可以通过新增service实现类来改变业务逻辑。若controller类使用的是service实现类,那第三方就无能为力了。所以建议:controller类使用service类的接口。