Является тег (или “маркер”) устаревшими интерфейсами?

Возможно, поздно, но мог бы помочь.

 fab.setBackgroundTintList(ColorStateList.valueOf(Color
                    .parseColor("#33691E")));

и анализ фактического цветового кода из списка цветов . Вы можете найти здесь

.

5
задан Cheeso 11 June 2009 в 19:48
поделиться

6 ответов

Интерфейсы тегов используются в Java (очевидным примером является Serializable). C # и даже Java, похоже, отходят от этого, хотя в пользу атрибутов, которые могут делать то же самое, но также и гораздо больше.

Я все еще думаю, что для них есть место в других языках, у которых нет атрибута концепция .NET и Java.

ETA:

Вы обычно используете это, когда у вас есть интерфейс, который подразумевает реализацию, но вы не хотите, чтобы класс, реализующий интерфейс, действительно должен был предоставлять эту реализацию .

Некоторые примеры из реального мира:

Serializable - хороший пример - он подразумевает, что существует реализация (где-то), которая может сериализовать данные объекта, но поскольку для этого доступна универсальная реализация, нет необходимости, чтобы объект сам реализовывал эту функциональность.

Другим примером может быть система кэширования веб-страниц. Допустим, у вас есть объект «Страница» и объект «RequestHandler». RequestHandler принимает запрос на страницу, находит / создает соответствующий объект Page, вызывает метод Render () для объекта Page и отправляет результаты в браузер.

Теперь предположим, что вы хотели реализовать кэширование для отображаемых страниц . Но загвоздка в том, что некоторые страницы являются динамическими, поэтому их нельзя кэшировать. Один из способов реализовать это - реализовать кэшируемые объекты страницы с «теговым» интерфейсом ICacheable (или, наоборот, у вас может быть интерфейс INotCacheable). Затем RequestHandler проверит, реализована ли страница ICacheable, и если да,

10
ответ дан 18 December 2019 в 07:56
поделиться

Я бы назвал себя объектно-ориентированным программистом и никогда не слышал об интерфейсе тегов.

1
ответ дан 18 December 2019 в 07:56
поделиться

Интерфейсы In .Net Tag могут быть отличными для использования с методами отражения и расширения. Интерфейсы тегов обычно представляют собой интерфейсы без каких-либо методов. Они позволяют вам увидеть, относится ли объект к определенному типу, без риска отражения над вашими объектами.

Примеры в .Net Framework INamingContainer является частью ASP.Net

8
ответ дан 18 December 2019 в 07:56
поделиться

Я использовал тег несколько раз взаимодействует в объектной модели, представляющей базу данных SQL. В этих случаях это подтип корневого интерфейса для определенных типов объектов. Легче проверить интерфейс тега, чем атрибут ('obj is IInterface', а не с помощью отражения)

0
ответ дан 18 December 2019 в 07:56
поделиться

Я думаю, что интерфейсы тегов стоит обсудить, потому что они являются интересным угловым случаем концепции интерфейса. Однако стоит отметить их нечастое использование также !

1
ответ дан 18 December 2019 в 07:56
поделиться

В руководстве по стилю .NET говорится об использовании атрибутов , а не интерфейсов тегов / маркеров.

альтернативный текст http://www.freeimagehosting.net/uploads/th.4528577db5.jpg
Щелкните, чтобы увидеть полное изображение
источник: http://www.informit.com/articles/article .aspx? p = 423349 & seqNum = 6
или любое количество других точек воздействия рекомендаций Квалины, таких как книга.

0
ответ дан 18 December 2019 в 07:56
поделиться