您的位置:首页 > 其它

关于 DAO 接口设计的思考

2008-11-07 11:03 211 查看
需求: 现在要设计 3 个 DAO 分对 Wind, Horse, Cow 进行增、删、改以及一些其他操作。

设计一:

Java代码



Public interface WindDao {

public void create(Wind obj);

public void delete(Wind obj);

public void update(Wind obj);

public void other(Wind obj);

}

Public interface HorseDao {

public void create(Horse obj);

public void delete(Horse obj);

public void update(Horse obj);

public void other(Horse obj);

}

Public interface CowDao {

public void create(Cow obj);

public void delete(Cow obj);

public void update(Cow obj);

public void other(Horse obj);

}

Public interface WindDao {     public void create(Wind obj);     public void delete(Wind obj);     public void update(Wind obj);      public void other(Wind obj); }  Public interface HorseDao {     public void create(Horse obj);     public void delete(Horse obj);     public void update(Horse obj);      public void other(Horse obj); }  Public interface CowDao {     public void create(Cow obj);     public void delete(Cow obj);     public void update(Cow obj);      public void other(Horse obj); }


设计二:

Java代码



Public interface BaseDao {

public void create(Object obj);

public void delete(Object obj);

public void update(Object obj);

}

Public interface WindDao extends BaseDao {

public void other(Wind obj);

}

Public interface HorseDao extends BaseDao {

public void other(Horse obj);

}

Public interface CowDao extends BaseDao {

public void other(Horse obj);

}

Public interface BaseDao {     public void create(Object obj);     public void delete(Object obj);     public void update(Object obj); }   Public interface WindDao extends BaseDao {     public void other(Wind obj); }  Public interface HorseDao extends BaseDao {     public void other(Horse obj); }  Public interface CowDao extends BaseDao {     public void other(Horse obj); }


疑惑:

采用设计一: 发现增、删、改 这些方法重复了。

采用设计二: 发现 WindDao 不但可以对 Wind 进行增、删、改操作,

而且可以对其他任意对象进行增、删、改操作。似乎违反了OO的设计原则。

Java代码



public interface BaseDao<T> {

public void create (T t);

public void delete (T t);

public void update (T t);

}

public interface WindDao extends BaseDao<Wind> {

public void other (Wind wind);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: