J2EE中 service层的作用,还有action为什么是调用IService,而不直接调用service层的方法,这不多此一举吗
6个回答
展开全部
1、service层的作用:总体说一下MVC的各层,service为业务逻辑层,用来处理较细致的业务相关的流程(我说的是业务流程,非控制流程)等操作;action为控制层,用来控制各业务处理的走向,和处理系统前后台连接;DAO为数据连接及数据库处理,可以看做框架中数据处理与数据库操作的中间件。
2、IService与Service(dao等同):正因为service层需要专注于业务逻辑,且业务逻辑有时复杂有时简单,有时一套逻辑只需满足一套业务,有时一套逻辑需要同时满足多套业务(满足==符合),所以Service层需要保持伸缩性和可扩展性,由此衍生出松耦合性需要。由Service来根据目前的功能或业务需求来定义接口,让IService来负责具体实现,可以根据需要来多态、重载、扩充等等。
2、IService与Service(dao等同):正因为service层需要专注于业务逻辑,且业务逻辑有时复杂有时简单,有时一套逻辑只需满足一套业务,有时一套逻辑需要同时满足多套业务(满足==符合),所以Service层需要保持伸缩性和可扩展性,由此衍生出松耦合性需要。由Service来根据目前的功能或业务需求来定义接口,让IService来负责具体实现,可以根据需要来多态、重载、扩充等等。
展开全部
楼主,action嗲用的应该是Iservice吧?用接口就是为了易于维护。
楼主给你说个简单的例子吧。
比如你在DAO层(类名位ClassA)写个方法,public void print(){System.out.println("你好");}。
你在ClassB,ClassC,……中引用这个方法的话需要分别在这N个类中创建一个A的实例(静态方法不用创建,但是也需要多次调用A),即要写出N个ClassA a = new ClassA();
然后用a.print();
一旦修改类名,就要找到所有引用修改类名。
而如果你用了接口的话,ClassA implements ClassADAO,
这样不管你的实现类怎么样,只要接口名称不变,调用的地方就都不需要修改了。
(当然,myeclipse在你修改类名的时候,会帮你把所有的引用的地方修改了,这个例子只是告诉你,接口是为了易于维护的)也就是可维护性扩展性高。
这是比较简单易懂的接口的好处,具体还有很多。说得多了不好理解,需要慢慢积累
阿
楼主给你说个简单的例子吧。
比如你在DAO层(类名位ClassA)写个方法,public void print(){System.out.println("你好");}。
你在ClassB,ClassC,……中引用这个方法的话需要分别在这N个类中创建一个A的实例(静态方法不用创建,但是也需要多次调用A),即要写出N个ClassA a = new ClassA();
然后用a.print();
一旦修改类名,就要找到所有引用修改类名。
而如果你用了接口的话,ClassA implements ClassADAO,
这样不管你的实现类怎么样,只要接口名称不变,调用的地方就都不需要修改了。
(当然,myeclipse在你修改类名的时候,会帮你把所有的引用的地方修改了,这个例子只是告诉你,接口是为了易于维护的)也就是可维护性扩展性高。
这是比较简单易懂的接口的好处,具体还有很多。说得多了不好理解,需要慢慢积累
阿
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个很简单,是体现了JAVA面向接口编程的理念,IService和IDAO仅是提供了一个接口,而真正实现的是在他们的实现类里,这样做有如下好处:
1:一个大的项目往往都是很多人共同合作开发出来的,模块与模块之间肯定是有关联的,比如我这个模块要调用你写好的方法,可是你又没有写好,这就体现了接口的好处了,你可以先把你要做的功能抽象出几个接口,我可以直接调用你写的接口,等你写好了,我也就写好了,是吧,只要你实现了接口的功能,返回了接口要的数据,我也就没问题了
2:接口也是为了规划类的管理和功能,用接口那个模块有什么功能一目了然,写一个类之前你是不是要知道他需要实现那些功能?你先写一个接口,然后再实现这些接口,就好比先有蓝图再有大楼(当然,这个不重要)
3:最重要的你可能觉得接口和类中的方法名一样调用那个不是一样?在实际效果上其实没什么分别,但是他不符合一种理念,因为接口是不变的,实现方法却是不断变化的,好比一个插座,他的插孔就是提供电的,只要返回电就行了,管你是交流还是直流的?就调用一个单一方法上看好像看不出他的优点,但是做个项目你就知道,需求都是抽像出许多接口,输入数据,返回数据给你,你去实现。。
1:一个大的项目往往都是很多人共同合作开发出来的,模块与模块之间肯定是有关联的,比如我这个模块要调用你写好的方法,可是你又没有写好,这就体现了接口的好处了,你可以先把你要做的功能抽象出几个接口,我可以直接调用你写的接口,等你写好了,我也就写好了,是吧,只要你实现了接口的功能,返回了接口要的数据,我也就没问题了
2:接口也是为了规划类的管理和功能,用接口那个模块有什么功能一目了然,写一个类之前你是不是要知道他需要实现那些功能?你先写一个接口,然后再实现这些接口,就好比先有蓝图再有大楼(当然,这个不重要)
3:最重要的你可能觉得接口和类中的方法名一样调用那个不是一样?在实际效果上其实没什么分别,但是他不符合一种理念,因为接口是不变的,实现方法却是不断变化的,好比一个插座,他的插孔就是提供电的,只要返回电就行了,管你是交流还是直流的?就调用一个单一方法上看好像看不出他的优点,但是做个项目你就知道,需求都是抽像出许多接口,输入数据,返回数据给你,你去实现。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
service层作用就一个,处理复杂的业务逻辑。
在比较大型的系统中,由于处理的逻辑很复杂,一次请求可能要多次操作数据库,而如果就把这些调用dao层的代码写到action中,可是可以,但是不利于代码的维护和可以复用性,所有一般都会在dao层和action中间加上一个service层,将一些复杂的逻辑交给service层处理。
至于为什么是调用接口而不是实例类,我建议你去看一下工厂设计模式,很容易就懂了。当然你也可以直接调用实例类,加一个包就可以了
在比较大型的系统中,由于处理的逻辑很复杂,一次请求可能要多次操作数据库,而如果就把这些调用dao层的代码写到action中,可是可以,但是不利于代码的维护和可以复用性,所有一般都会在dao层和action中间加上一个service层,将一些复杂的逻辑交给service层处理。
至于为什么是调用接口而不是实例类,我建议你去看一下工厂设计模式,很容易就懂了。当然你也可以直接调用实例类,加一个包就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
调用接口是为了方便与扩展和维护,你要搞清楚j2ee开发的思想,对扩展开放,对修改关闭!所有的设计模式都是基于这个的!你做的项目多了,就会深刻体会这些问题了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询