我有一个业务类,它调用实现DAO接口的DAOimpl类,现在如何减少耦合。DAO 用于减少与持久性逻辑的耦合。我们应该做些什么来减少DAO和业务逻辑之间的耦合。
问问题
549 次
1 回答
4
您的商务舱想要与其他商务舱进行交互。你的 DAO 提供的接口应该只需要对业务类的依赖。
例如
public class Apple extends Fruit {}
和
public interface AppleDao extends Dao { // can be refactored even more
public void add(Apple apple) throws FruityException;
}
和一个实现
public class AppleDaoHibernateImpl implements AppleDao {
@Inject
private Session session; // Hibernate session or JPA EntityManager, etc.
public void add(Apple apple) throws FruitException {
// do something with session, entityManager, etc.
}
}
当您的业务类使用AppleDao
时,他们看不到任何需要导入(依赖)的 SQL、I/O 等类。相反,他们只看到更多的业务(模型)类,例如Apple
和FruityException
。
通过这种方式,您可以更改底层实现,例如使用 Web 服务而不是直接使用数据库,而无需更改接口。
于 2013-09-24T19:43:31.843 回答