Является ли использование пустых интерфейсов плохим дизайном? - PullRequest
5 голосов
/ 13 ноября 2010

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

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

Это плохой дизайн или приемлемы пустые интерфейсы?

Ответы [ 6 ]

2 голосов
/ 13 ноября 2010

То, о чем вы говорите, известно как Маркерные интерфейсы .

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

1 голос
/ 13 ноября 2010

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

1 голос
/ 13 ноября 2010

Мое личное понимание интерфейса заключается в том, что он формирует публичный договор между одним или несколькими объектами.Идея проста: вы можете создать свою кодовую базу, используя интерфейсы, не беспокоясь о реализации.Сказав, что это интересный вопрос, потому что вы технически пытаетесь информировать контракт.Я бы сказал, давай.

1 голос
/ 13 ноября 2010

На мой взгляд, с ними все в порядке. Большая часть их силы заключается в сочетании (сгенерированных) частичных классов.

0 голосов
/ 13 ноября 2010

Там нет ничего ... Я думаю, неправильно с пустым интерфейсом.Просто цель интерфейса - определить общий набор функций, которые могут различаться в зависимости от того, как он реализован.

Это не облегчит кодирование, поскольку вы эффективно работаете с черным ящиком (object, как некоторые могут это назвать).

Честно говоря, если бы я реализовывал такую ​​открытую архитектуру, я бы просто использовал обычную старую object.

0 голосов
/ 13 ноября 2010

Почему вы создаете этот интерфейс, если он пуст?Каково содержание каждого класса?Есть ли какая-то общность между ними?Если ответ на этот вопрос - «нет», то почему вы создаете интерфейс для каждого?Но подумайте об этом и посмотрите, сможете ли вы вставить что-нибудь в этот интерфейс, общий для элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...