我有這樣的事情:
類用戶:
public class Users {
private int userId;
private String userPassword;
private int userProfile;
private String userName;
private String userPosition;
private int userCencos;
private String userOffice;
public Users(int userId, String userPassword, int userProfile, String userName, String userPosition, int userCencos, String userOffice) {
Constructor..
}
public String getUserOffice() {
return userOffice;
}
more getter/setter ...
接口:
public interface UserDAOInterface {
public int insert(Users user) throws SQLException;
more DAO Operations...
}
DAO用戶:
public class UserDAOConcrete implements UserDAOInterface {
private int result;
public PreparedStatement query;
@Override
public Users login(int userId, String password) throws NumberFormatException , SQLException{
SQL sql = new SQL();
try {
PreparedStatement loginQuery = sql.createPStatement(cf.SELECT_USER_BY_LOGIN_DATA);
loginQuery.setInt(1, userId);
loginQuery.setString(2, password);
System.out.println(loginQuery.toString());
try {
ResultSet resultSet = loginQuery.executeQuery();
if (!resultSet.isBeforeFirst()) {
loginQuery.close();
sql.dbConection().close();
throw new NullPointerException("Usuario No encontrado");
}
while (resultSet.next()) {
Users newLoggedUser = new Users();
newLoggedUser.setUserId(resultSet.getInt("UserId"));
newLoggedUser.setUserCencos(resultSet.getInt("CostCenter_CostCenterId"));
newLoggedUser.setUserProfile(resultSet.getInt("Profiles_ProfileId"));
newLoggedUser.setUserName(resultSet.getString("UserName"));
newLoggedUser.setUserPosition(resultSet.getString("UserPosition"));
newLoggedUser.setUserOffice(resultSet.getString("UserOffice"));
resultSet.close();
loginQuery.close();
sql.dbConection().close();
return newLoggedUser;
}
} catch (SQLException | NullPointerException | NumberFormatException e) {
throw e;
} finally {
try {
loginQuery.close();
sql.dbConection().close();
} catch (SQLException e) {
System.out.println("SQL Error: " + e);
}
}
return null;
} catch (SQLException ex) {
System.out.println("SQL Error: " + ex);
}
return null;
}
DAOFactory:
public class UserDAOFactory {
public static UserDAOConcrete getUserDAO(String type) {
if (type.equalsIgnoreCase("user")) {
return new UserDAOConcrete();
} else {
return new UserDAOConcrete();
}
}
調用方法:
UserDAOConcrete userDAO = UserDAOFactory.getUserDAO("user");
Users userData = userDAO.login(Integer.parseInt(loginUserId.getText()), String.valueOf(userLoginPassword.getPassword()));
//Do whatever you need with the Object userData.
正如你可以看到我有一個的getter/setter和接口類的混合,工作正常,我應該做我的代碼一樣這個?。
你不能在接口中實現方法 –
反正我覺得你缺少'抽象類'示例 –
@ cricket_007 Ohh對不起,我的壞。編輯。 –