0

我有一个业务类,它调用实现DAO接口的DAOimpl类,现在如何减少耦合。DAO 用于减少与持久性逻辑的耦合。我们应该做些什么来减少DAO和业务逻辑之间的耦合。

4

1 回答 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 等类。相反,他们只看到更多的业务(模型)类,例如AppleFruityException

通过这种方式,您可以更改底层实现,例如使用 Web 服务而不是直接使用数据库,而无需更改接口。

于 2013-09-24T19:43:31.843 回答