Назад к задачам
МТСПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
6
Сервис: надёжное создание и извлечение записей
Компании, где спрашивали:
Условие задачи
Проведение ревью кода на предмет обеспечения потокобезопасности и повторного использования объекта MessageDigest внутри класса DataService.
public class DataService {
private AccessService access;
private DataRepository repository;
private MessageDigest digest = get();
public DataService(AccessService access, DataRepository repository) {
this.access = access;
this.repository = repository;
}
public Data get(String uid) {
access.checkRead();
return repository.get(uid);
}
public void create(String name) {
access.checkWrite();
digest = get();
repository.save(new Data(
HexFormat.of().formatHex(digest.digest(name.getBytes())),
name
));
}
public static MessageDigest get() {
try {
return MessageDigest.getInstance("md5");
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
public record Data(String uid, String name) {}
public interface DataRepository {
void save(Data data);
Data get(String uid);
}
public interface AccessService {
void checkRead();
void checkWrite();
}
}