중복없이이 코드를 만들려면 어떻게해야합니까? 이 방법은 비슷합니다.어떻게 중복없이이 방법을 다시 쓸 수 있습니까?
방법은 전화 번호를 만들 수 있습니다 :
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;
}
}
내 코드에서 비슷한 문제를 해결하기 위해 읽을 수있는 것은 무엇입니까?
하지 마십시오. 한 가지 일을 잘 수행하는 방법을 사용하는 것이 좋습니다. 그리고 필요한 경우 항상 인터페이스 또는 추상 클래스를 사용할 수 있습니다. –
u는 디자인 패턴을 읽고 코드를 작성하여 을 시도 할 수 있습니다. https://www.tutorialspoint.com/design_pattern/ – saurabh