Лаг / латентность? Я звоню BS по этому вопросу. От этой практики накладных расходов должно быть ровно ноль. ( Редактировать: в комментариях было указано, что это может фактически препятствовать оптимизации, выполняемой виртуальной машиной HotSpot. Я не знаю достаточно о реализации виртуальной машины, чтобы подтвердить или опровергнуть это. Я основывал свой комментарий на C ++ реализация виртуальных функций.)
Есть некоторые накладные расходы кода. Вы должны создать все необходимые вам конструкторы из базового класса, передав их параметры.
Я также не вижу в этом анти-паттерна. Однако я вижу в этом упущенную возможность. Вместо того, чтобы создавать класс, который выводит базовый класс просто для переименования, как насчет того, чтобы создать класс, который содержит коллекцию и предлагает улучшенный интерфейс для конкретного случая? Должен ли ваш кеш виджетов действительно предлагать полный интерфейс карты? Или он должен вместо этого предложить специализированный интерфейс?
Кроме того, в случае коллекций шаблон просто не работает вместе с общим правилом использования интерфейсов, а не реализаций - то есть в простом коде коллекции вы должны создать HashMap<String, Widget>
, а затем назначить его переменной типа Map<String, Widget>
. Ваш WidgetCache
не может распространяться Map<String, Widget>
, потому что это интерфейс. Это не может быть интерфейс, который расширяет базовый интерфейс, потому HashMap<String, Widget>
что не реализует этот интерфейс, как и любой другой стандартный набор. И хотя вы можете сделать его классом, который расширяется HashMap<String, Widget>
, вам необходимо объявить переменные как WidgetCache
или Map<String, Widget>
, и первый из них теряет гибкость для замены другой коллекции (может быть, некоторой коллекции отложенной загрузки ORM), в то время как второй вид побеждает точку иметь класс.
Некоторые из этих контрпунктов также применимы к моему предлагаемому специализированному классу.
Это все моменты для рассмотрения. Это может быть или не быть правильным выбором. В любом случае предложенные коллегой аргументы недействительны. Если он думает, что это анти-шаблон, он должен назвать это.