service和serviceImpl的选择

同行中,有些同行公司的代码风格是service层=service接口+serviceImpl实现类;

而有的同行公司的代码风格是service层=service类;

为什么不一样呢?

以前没想过这个问题,今天突然对这个产生了疑惑,通过百度,和github及朋友处以及自己的思考,有了如下结论:

当项目的业务逻辑简单时,可选择service层=service类;

当项目的业务复杂时,可选择service层=service接口+serviceImpl实现类;

至于复杂和简单的度得自己把握;

为什么有这样的区别呢?

我举个例子,

当我在定义接口时,会有一个权限验证的方法,

但是并不是所有的请求都回进入这个方法(比如登录接口);

此时,可将请求经过的路线分为两类:1(进入过权限验证),2(没有进入过权限验证);

但这两条路都是从同一个端口进入后台的。

类比

service层=service接口+serviceImpl实现类;

service接口层就是端口,serviceImpl实现类里不同的方法就是路1,和路2.乃至路3。

以上为举例。

当使用

service层=service接口+serviceImpl实现类——的形式后,

业务逻辑将会更便于扩展。

但缺点就是:多了一层——service接口;

凡事都有得必有失;

但我们可以因地制宜,选择最合适自己项目的。

以上,个人理解。

时间: 2024-10-14 11:19:36

service和serviceImpl的选择的相关文章

DroidPlugin源码分析插件进程管理以及预注册Activity,Service,ContentProvide的选择

在360对DroidPlugin的特点介绍中有云: 插件的四大组件完全不需要在Host程序中注册,支持Service.Activity.BroadcastReceiver.ContentProvider四大组件. 实现了进程管理,插件的空进程会被及时回收,占用内存低. 之所以支持Service,Activity,ContentProvider三大组件,是因为DroidPlugin在AndroidManifest文件中预先注册了8个运行插件的进程,每个进程预注册Service一个, Content

【Java 新建项目】使用程序对新项目的各个实体 创建Dao、DaoImpl、Service、ServiceImpl层的文件

首先给出基本Dao层代码: GenericDao.java 1 package com.agen.dao; 2 3 import java.io.Serializable; 4 import java.util.Collection; 5 import java.util.List; 6 import java.util.Map; 7 8 import org.hibernate.Criteria; 9 import org.hibernate.criterion.Criterion; 10 i

SAP Web Service简介与配置方法

p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-size: 10.5000pt } h1 { margin-top: 17.0000pt; margin-bottom: 16.5000pt; margin-left: 0.0000pt; text-indent: 21.0000pt; page-break-after: avoid; text-al

使用MyEclipse9.0开发Web Service

早期使用MyEclipse6.0做WEB服务,里面使用的是XFIRE框架搭建服务平台,后来因为XFIRE更名之后不再更新,导致在最新MyEclipse9.0中使用的是JAX搭建服务. 此文档就是教如何快速的使用9.0开发WEB服务. 步骤一:创建Web Service Project 这里我们使用的框架是JAX-WS.他是目前比较流行和成熟的服务框架. 注意,这里虽然我们选择了JAX-WS框架,但是最让人气愤的是MyEclipse9.0跟本不会导入这个JAR包--汗,JDK里又不自带,只有自己导

Android四大组件之Service的介绍

Service的基本认识 Service是一个可以在后台执行长时间运行操作而不使用用户界面的应用组件.Service可由其他应用组件启动,而且即使用户切换到其他应用,Service仍将在后台继续运行.Service主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务.必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持运行状态. Service和Activity很相似,但是区别在于:Service一直在后台运行,没有用户界面,所以不会到前台,如果Service被

ArcGIS for Server 10.2 发布Feature Service

折腾一下午,终于把自带的例子发布成Feature Service了,这样就可以通过web编辑了.记录一下步骤. 环境:已经安装好SQL Server 2008 R2,ArcGIS for Desktop 10.2,ArcGIS for Server 10.2,ArcSDE 10.2 for SQL Server 2008 准备工作: 1.创建Geodatabase,参考http://www.cnblogs.com/oceanking/p/3892584.html 2.添加一个数据库连接.在GIS

基于Spring4+Hibernate4的通用数据访问层+业务逻辑层(Dao层+Service层)设计与实现!

基于泛型的依赖注入.当我们的项目中有很多的Model时,相应的Dao(DaoImpl),Service(ServiceImpl)也会增多. 而我们对这些Model的操作很多都是类似的,下面是我举出的一些(见名知意,其它自行脑补): 1.save2.saveAll3.findById4.update5.saveOrUpdate6.delete7.deleteAll8.deleteById9.loadAll10.load(int page,int rows)11.getTotalCount12.ge

(WCF) WCF and Service Debug

需要做一个多程序间的通讯,采用WCF和WCF Service是目前的选择. 需求:和产品进行通讯,和用户有交互操作,并将最后结果传送个DB 基本思路: 1. 用WPF客户端程序和产品进行通讯,获取必要的结果. 2. WPF客户端程序里调用WCF 的Proxy, 将结果传送个WCF Service. 3. 另外一个程序通过另一个WCF Proxy获取结果,并传送到DB Control System(Service)             <-------------------->   WCF

打开VMware Workstation 时出现 The VMware authorization service is not running

今天打开VMware workstation时出现这个报错,虽然问题很简单,但是必须坚持自己选的路,把遇到的每一个错每一个重要的点都记录下来,就来写了这篇博文,希望大家一起成长. 解决方法: 1:打开windows任务管理器,选择下方的打开服务(win10操作系统) 2:找到VMware Authorization service这个服务,选择打开. 小弟文采有限,还希望各位前辈们多多见谅!