この質問にどのようなタイトルを付ければよいか、私は少し確信が持てないので、他の人がそれを使用している可能性がありますが、私は先生からポリモーフィズムのこの簡単な例を持っています。
しかし、私の変更が「安全」かどうかはわかりません。
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 と呼ばれるインターフェイスを実装します。このインターフェイスは、データベースとの通信に必要ないくつかのメソッドをホストします。datacontroller はすべてのロジックを処理し、それ以外のことを知りたくないので、インターフェイスの型で DAO の参照を渡します。
これは私の先生がしたことです。ただし、DataDAOへの参照はDAOクラスの「closeConnection」メソッドを指していないため、以下の「closeConnection」メソッドは機能しません...
[上記のコードでは、明らかに closeConnection メソッドは機能しません]
今、私の考えはただ変更することでした...
private DataPersistenceInterface DataDAO;
に
private DataDAO DataDAO;
datacontroller はそのコンストラクターで DataPersistenceInterface の引数を取るため、DAO オブジェクトからそれ以外のことを知ることはありません。これで、DAO で closeConnection を呼び出すことができるようになりました。
しかし、これが「安全」であるかどうかはわかりませんか?何かがそうではないと私に言っているだけです。
お時間をいただきありがとうございます。