Junior — Middle
140
Өзгөртүүлөргө тыюу салынган класстын функционалдуулугун кеңейтүүнүн жолу кандай, ага маалыматтардын тизмесин кошуу менен?
Кайсыл жерде компаниялар сурады
AIден жооп
sobes.tech AI
Если класс нельзя изменять напрямую (например, он из сторонней библиотеки), но нужно добавить к нему данные, можно использовать паттерн "обёртка" (Wrapper) или композицию.
Другой способ — использовать Map (например, HashMap) для хранения дополнительных данных, где ключом будет объект класса, а значением — нужные данные.
Также в Java 8+ можно использовать default методы в интерфейсах для расширения функциональности, но это не добавляет состояние.
Пример с использованием Map:
class ExternalClass {
// Класс, который нельзя менять
}
class ExternalClassData {
private static Map<ExternalClass, String> extraData = new HashMap<>();
public static void setData(ExternalClass obj, String data) {
extraData.put(obj, data);
}
public static String getData(ExternalClass obj) {
return extraData.get(obj);
}
}
Таким образом, можно "расширить" класс, не меняя его код.