我有点不确定这个问题的标题是什么,所以其他人可能会使用它,但是我从我的老师那里得到了这个简单的多态性示例,我试图对其进行修改。
但我不确定我的修改是否“安全”。
public class AppSystem {
...
private DataPersistenceInterface DataDAO;
private DataController DataController;
...
public void createConnection(String username, String password)
throws ClassNotFoundException, SQLException {
if(username.isEmpty() || password.isEmpty()) {
DataDAO = new DataDAO();
DataController = new DataController(DataDAO);
} else {
DataDAO = new DataDAO(url, username, password, driver);
DataController = new DataController(DataDAO);
}
}
public void closeConnection() {
DataDAO.closeConnection();
}
我们有一个控制器和一个 DAO。DAO 实现了一个名为 DataPersistenceInterface 的接口,该接口承载了与数据库进行某些通信所需的一些方法。由于数据控制器处理所有逻辑,并且我们不希望它知道其他任何事情,因此我们以接口类型向它传递 DAO 的引用。
这就是我的老师所做的。但是,下面的方法“closeConnection”因此不起作用,因为对 DataDAO 的引用不指向 DAO 类中的任何“closeConnection”方法......
[closeConnection方法在上面的代码中显然不起作用]
现在,我的想法是改变...
private DataPersistenceInterface DataDAO;
到
private DataDAO DataDAO;
由于数据控制器在其构造函数中采用 DataPersistenceInterface 的参数,因此它不会从 DAO 对象中了解任何其他内容。现在我可以在 DAO 上调用 closeConnection 了。
但我不确定这是否“安全”?有些东西只是告诉我不是。
感谢您的时间。