我正在构建一个具有业务逻辑层的应用程序,该层需要访问所有与DB相关的DAO层。我的要求是DAOImpl类可以不断变化,所以我正在寻找能够在业务逻辑类中获得DAOImpl类句柄的方法,而无需知道实际的DAOImpl类。有什么方法可以用Java实现这个目标吗?
答案 0 :(得分:3)
DAOImpl
类应该实现接口DAOLayer
(比如说)。您的businessLogic类应该由DAOLayer
对象组成。
class BusinessLogic
{
/// ...
DAOLayer daoLayer;
public BusinessLogic(DAOLayer daoLayer)
{
this.daoLayer = daoLayer;
}
/// ...
}
class DAOImpl implements DAOLayer
{
/// ...
}
您应该在创建DAOLayer
类对象时传递BusinessLogic
的实际实现。
类似于以下内容:
DAOLayer aDaoLayer = new DAOImpl();
BusinessLogic bl = new BusinessLogic(aDaoLayer);
OR
public BusinessLogic()
{
this.daoLayer = DAOFactory.create(true);
}
class DAOFactory
{
public static DAOLayer create(bool isDB)
{
DAOLayer aDao;
if(isDB)
{
aDao = // create for DB
}
else
{
aDao = // create for file
}
return aDao;
}
}
答案 1 :(得分:1)
你的商业逻辑应该只能处理DAO interfaces,这将隐藏真正的实体。
为了能够快速更改实现类,请查看IoC容器,例如Spring
答案 2 :(得分:0)
听起来你想要使用interface,这是java将实现与所需行为分离的基本方法。