如何使這段代碼無重複? 這種方法很相似。如何重寫這種方法而不重複?
方法來創建電話號碼:
private List<String> createPhoneNumbers(String sqlStatement, Long id) {
List<String> phones = new ArrayList<>();
try (PreparedStatement statement = this.connection.prepareStatement(sqlStatement)) {
statement.setLong(1, id);
try (ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
phones.add(resultSet.getString("phoneNumber"));
}
return phones;
}
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
方法來創建好友列表:
private List<Account> createFriendList(String sqlStatement, Long id) {
List<Account> friends = new ArrayList<>();
try (PreparedStatement statement = this.connection.prepareStatement(sqlStatement)) {
statement.setLong(1, id);
try (ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
friends.add(createSimpleElement(resultSet));
}
return friends;
}
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
方法來創建羣組列表:
private List<Group> createGroupList(String sqlStatement, Long id) {
List<Group> groups = new ArrayList<>();
try (PreparedStatement statement = this.connection.prepareStatement(sqlStatement)) {
statement.setLong(1, id);
try (ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
groups.add(createGroupFromResultSet(resultSet));
}
return groups;
}
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
這是我很不好解決。
//field values: 1- create String, 2 - createAccount, 3 - createGroup
private <E> List<E> createList(String selectSql, Long id, int field) {
List<E> list = new ArrayList<>();
try (PreparedStatement statement = this.connection.prepareStatement(selectSql)) {
statement.setLong(1, id);
try (ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
switch (field) {
case 1:
list.add((E) resultSet.getString("phoneNumber"));
break;
case 2:
list.add((E) createSimpleElement(resultSet));
break;
case 3:
list.add((E) createGroupFromResultSet(resultSet));
break;
}
}
return list;
}
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
我能讀什麼來解決我的代碼中的類似問題?
不要。有一種方法可以做一件事,做得很好。如果需要的話,你總是可以使用接口或抽象類。 –
你可以閱讀設計模式,並通過編寫代碼嘗試 ,https://www.tutorialspoint.com/design_pattern/ – saurabh