论坛首页 Java企业应用论坛

请教关于业务服务层实现问题?

浏览 2109 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-13  
关于Service层的实现,有如下两种:

首先定义一个Service接口

package com.test.service;

public interface MyService {
   public void A();
}


然后定义一个Dao接口与其实现

package com.test.dao;

public interface MyDao {
   public Object getA();
}

package com.test.dao;

public class MyDaoImpl implements MyDao {

	public Object getA() {
		return null;
	}
}


那么现在问题就来了,应该这样实现Service
package com.test.service;

import com.test.dao.MyDaoImpl;

public class MyServiceimpl extends MyDaoImpl implements MyService {

	public void A() {
		// TODO Auto-generated method stub

	}

}


还是应该

package com.test.service;

import com.test.dao.MyDao;

public class MyServiceimpl implements MyService {
    private MyDao myDao;
	public void A() {
		// TODO Auto-generated method stub

	}
	public void setMyDao(MyDao myDao) {
		this.myDao = myDao;
	}

}


第二种貌似更加符合设计理念一些,但是第一种也很好用,请问各位大侠的意见
   发表时间:2007-12-14  
从示例代码看,貌似你的service本身没有太多逻辑,如果实际情况的确如此,建议你采用第一种方式,这样是SS2采用的方式,从接口设计隔离和维护成本来看都是比较合理的,而第二种则导致了维护成本的提高。
0 请登录后投票
   发表时间:2007-12-14  
yimlin 写道
从示例代码看,貌似你的service本身没有太多逻辑,如果实际情况的确如此,建议你采用第一种方式,这样是SS2采用的方式,从接口设计隔离和维护成本来看都是比较合理的,而第二种则导致了维护成本的提高。


我的应用里面Service比较复杂,我给的代码只是一个示例而已。

我一直对这两种实现选择犹豫不觉,因为我们是一个大型的长期产品,现在正准备重构一下
0 请登录后投票
   发表时间:2007-12-14  
多用组合,少用继承,除非组合不能做继承做的事
0 请登录后投票
   发表时间:2007-12-15  
参考:分层架构设计
http://fangzhouxing.iteye.com/blog/147125
0 请登录后投票
   发表时间:2007-12-15  
hanny0918 写道
多用组合,少用继承,除非组合不能做继承做的事


请教一下这样做的根据在哪里?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics