DaoFactory設計模式非常適合您的實施。
接口
public interface DatabaseEngineInterface {
public void insert(User user);
public void update(User user);
public void delete(int userId);
}
類,它實現上述方法:
public class DatabaseModel implements DatabaseEngineInterface {
@Override
public void delete(int userId) {
// delete user from user table
}
@Override
public User[] findAll() {
// get a list of all users from user table
return null;
}
@Override
public User findByKey(int userId) {
// get a user information if we supply unique userid
return null;
}
@Override
public void insert(User user) {
// insert user into user table
}
@Override
public void update(User user) {
// update user information in user table
}
}
廠
public class DatabaseModelDAOFactory {
public static UserDAO getUserDAO(String type) {
if (type.equalsIgnoreCase("mysql")) {
return new UserDAOMySQLImpl();
} else {
return new UserDAOORACLEImpl();
}
}
}
客戶端代碼:
然後,在客戶端,而不是像一個硬編碼線:
DatabaseModel userDAO=DatabaseModelDAOFactory.getUserDAODatabaseEngineInterface("jdbc");
你可以有一個屬性文件,以便能夠動態的DAO之間進行切換,已經檢索到字符串來自屬性文件,你可以簡單地做:
DatabaseModel userDAO=DatabaseModelDAOFactory.getUserDaoDatabaseEngineInterface(myStringFromPropertiesFile);
根據屬性文件中的定義,myStringFromPropertiesFile將包含「mysql」或「oracle」。
是什麼使它成爲特殊情況? – faressoft
@faressoft還有其他方法可以實施戰略;例如與物業注入。 –
這與一些如何依賴注入模式有關嗎? – faressoft