Информация об изменениях

Сообщение Re[2]: Интерфейсы и реализация от 02.09.2020 20:11

Изменено 02.09.2020 20:18 ·

Re[2]: Интерфейсы и реализация
Здравствуйте, rosencrantz, Вы писали:

R>Если интерфейс выкинуть и оставить только сам BatchInsertingUserHandler, тут возникает много неясностей

Я не вижу никаких неясностей. Что плохого с именем "UserHandler" для этого класса? Зачем этот префикс BatchInserting?
Re[2]: Интерфейсы и реализация
Здравствуйте, rosencrantz, Вы писали:

R>Если интерфейс выкинуть и оставить только сам BatchInsertingUserHandler, тут возникает много неясностей

Я не вижу никаких неясностей. Что плохого с именем "UserHandler" для этого класса? Зачем этот префикс BatchInserting?

class UserCsvReader {
  void readAllUsers(UserHandler userHandler) {
    ...
  }
}

class BatchInserter<TRow> {
  BatchInserter(String sql, int batchSize) {...}

  void insert(TRow row) {
    if (batch.size < batchSize) {
      batch.add(row);
    } else {
      connection.batchUpdate(sql, batch);
      batch.clear();
    }    
  }
}

class UserHandler {
  UserHandler(BatchInserter<UserRow> batchInserter) {}

  void handleUser(User user) {
    UserRow r = makeRowFromUser(user);
    batchInserter.insert(r);
  }
}

BatchInserter<UserRow> batchInserter = new BatchInserter("insert into Users(...)");
UserHandler userHandler = new UserHandler(batchInserter);
UserCsvReader reader = new UsersCsvReader();
reader.readAllUsers(userHandler);

И что не так?