论坛首页 Java企业应用论坛

关于web层与业务层的接口问题

浏览 9811 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-10-13  
你搞个sequenceDao.nextVal(Strnig sequenceName),不管oracle,mysql,sybase,你自己的程序就不需要任何改变了.如果不用接口,sequenceDao实现为一个类,那么你得把里面的代码删除,修改.要改回来,就得把代码拷回来.如果有多个数据库,OK,没法了,只得改名字.dao1,dao2,dao3...
0 请登录后投票
   发表时间:2006-10-13  
sequenceDAO不会是生成序列ID的吧,还是唯一性ID?
前者太那个了,何况,oracle这些rowid是不让改的!
后者,常用操作,比较流行!32位加密!
0 请登录后投票
   发表时间:2007-02-02  
使用接口可以使具体实现依赖于接口,如果具体实现需要改变那么就直接更换就可以,这样可以提高可维护性,同时提高可重用性.
0 请登录后投票
   发表时间:2007-02-03  
Uranus 写道
写代码中想到一个问题,
1.业务层先写了接口,然后再实现了它
2.不写接口直接在业务层写函数实现
两者有什么区别,写接口的好处是什么??

单单从程序开发的角度来说,不写接口更方便,但是你到了系统维护和扩展阶段你就会知道没有接口的痛苦拉。
0 请登录后投票
   发表时间:2007-02-03  
其实接口不光有隐藏它本身实现细节的作用, 还有隐藏实现中不相关的其它逻辑的作用, 比如:

class OrderDAO
{
  Order createOrder(...);
  void deleteOrder(...);

  void exportOrders(DataTarget dt);
  void importOrders(DataSource ds);
}

内部门户Web应用的程序可能只用到前两个方法, 而负责联合数据处理的管理门户都要用到. 这时候给它提取出接口来就更清晰优雅:
interface LocalOrderDAO
{
  Order createOrder(...);
  void deleteOrder(...);
}

interface FederalOrderDAO extends LocalOrderDAO
{
  void exportOrders(DataTarget dt);
  void importOrders(DataSource ds);
}

然后实现类很可能还是一个, 但内部门户网站的程序就只需要依赖于, 并且只关心 LocalOrderDAO.
0 请登录后投票
   发表时间:2007-03-23  
看看什么叫IOC先,就知道怎么解耦的了;
0 请登录后投票
   发表时间:2007-03-24  
complystill 写道
其实接口不光有隐藏它本身实现细节的作用, 还有隐藏实现中不相关的其它逻辑的作用, 比如:

class OrderDAO
{
  Order createOrder(...);
  void deleteOrder(...);

  void exportOrders(DataTarget dt);
  void importOrders(DataSource ds);
}

内部门户Web应用的程序可能只用到前两个方法, 而负责联合数据处理的管理门户都要用到. 这时候给它提取出接口来就更清晰优雅:
interface LocalOrderDAO
{
  Order createOrder(...);
  void deleteOrder(...);
}

interface FederalOrderDAO extends LocalOrderDAO
{
  void exportOrders(DataTarget dt);
  void importOrders(DataSource ds);
}

然后实现类很可能还是一个, 但内部门户网站的程序就只需要依赖于, 并且只关心 LocalOrderDAO.


这个例子不错,我想这样写也应该可以:
interface LocalOrderDAO
{
	Order createOrder();
	void deleteOrder();
	public interface FederalOrderDAO
	{
	  void exportOrders(DataTarget dt);
	  void importOrders(DataSource ds);
	}
}

实现的时候也可以分开实现
class FederalOrderDAOImp implements LocalOrderDAO.FederalOrderDAO

class LocalOrderDAOImp implements LocalOrderDAO
0 请登录后投票
论坛首页 Java企业应用版

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