При создании программного обеспечения я часто обнаруживаю, что мне нужно предоставлять экземпляры вокруг много, чтобы они могли ссылаться на нестатические элементы друг друга. Вместо огибает большое число объектов, я мог бы создать класс (в Java), как следующее:Есть ли недостатки в использовании этой системы?
public class Handler {
private HashMap<String, Object> map = new HashMap<>();
public void put(String key, Object value) {
map.put(key, value);
}
public Object get(String key, Object value) {
return map.get(key);
}
}
Вы могли бы затем передать этот класс вокруг и каждый объект, который использует его добавить себя в обработчик, так что вы может легко делиться вещами между примерами. Вы даже можете сделать «статическую» версию этого класса и добавить обычно доступные переменные, например. размеры экрана.
Я чувствую, что использование вышеизложенного будет довольно плохо делать на уровне разработки программного обеспечения. Есть ли что-то «неправильное» в этом?
Основная проблема заключается в том, что вы теряете информацию о типе: вы не знаете, имеет ли данный экземпляр «Handler» данный ключ, и вы не знаете, связано ли значение, связанное с ключом данного тип. –
Также очень легко случайно перезаписать существующую запись, нечаянно повторно используя существующий ключ, тем более, что карта становится больше. Удачи, отслеживая эти ошибки. Вы также можете обнаружить, что вы сталкиваетесь с проблемами памяти дальше по линии, потому что вы сохраняете объекты живыми, которые обычно умерли и были собраны мусором давно. – JonK
Это может быть ассимилировано по шаблону реестра. –