Понимание интерфейсов

Некоторые браузеры имеют функцию безопасности, которая запрещает JavaScript знать локальный полный путь вашего файла. Это имеет смысл - как клиент, вы не хотите, чтобы сервер знал файловую систему вашего локального компьютера. Было бы неплохо, если бы все браузеры сделали это.

5
задан Aaron Sanders 27 August 2008 в 18:12
поделиться

11 ответов

Лично, я использовал бы Список <Сотрудник> для создания списка на бэкенде и затем использовал бы IList, когда Вы возвращаетесь. При использовании интерфейсов это дает Вам гибкость для изменения реализации, не имея необходимость изменяться, кто использует код. Если бы Вы хотели придерживаться ArrayList, то это было бы неуниверсальным IList.

4
ответ дан 13 December 2019 в 22:20
поделиться

Jason

Можно также возвратить IList <>, потому что массив на самом деле реализует этот интерфейс.

2
ответ дан 13 December 2019 в 22:20
поделиться

Лучший способ сделать что-то вроде этого состоял бы в том, чтобы возвратиться, как Вы говорите, Список, предпочтительно с помощью дженериков, таким образом, это был бы Список<Employee>.

Возврат Списка, а не ArrayList означает, что, если позже Вы решаете использовать, скажем, LinkedList, Вы не должны изменять ни один код кроме того, где Вы создаете объект для начала (т.е., вызов к "новому ArrayList ())".

1
ответ дан 13 December 2019 в 22:20
поделиться

Если все, что Вы делаете, выполняет итерации через список, можно определить метод, который возвращает список как IEnumerable (для.NET).

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

1
ответ дан 13 December 2019 в 22:20
поделиться

Действительно ли там какой-либо причиной являются потребности набора, которые будут заказаны? Почему не просто возвращаются IEnumerable<Employee>? Это дает абсолютный минимум, который требуется - если бы Вы позже хотели некоторую другую форму устройства хранения данных, как Сумка или Набор или Дерево или этажерка, то Ваш контракт остался бы неповрежденным.

1
ответ дан 13 December 2019 в 22:20
поделиться

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

Имея это в виду, интерфейс работает на принятие объекта как аргумент. Если параметр функции призывает к массиву или ArrayList, это - единственная вещь, которую можно передать ему. Если параметр функции призовет к IEnumerable, то он примет также, а также много других объектов. Это более полезно

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

Я стою объединенный с теми, которые советуют Вам убегать от ArrayList, все же. Дженерики настолько лучше.

1
ответ дан 13 December 2019 в 22:20
поделиться

Интерфейс является контрактом между реализацией и пользователем реализации.

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

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

0
ответ дан 13 December 2019 в 22:20
поделиться

Вы не говорите, какой язык Вы говорите о, но в чем-то.NETish, затем это больше не работы для возврата IList, чем Список или даже ArrayList, хотя, простое упоминание которого устаревший класс заставляет меня думать, что Вы не говорите о.NET.

0
ответ дан 13 December 2019 в 22:20
поделиться

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

В случае Вы описываете, передавание интерфейса не дает Вам конкретное преимущество, если бы это был я, то я передал бы ArrayList с универсальным типом или передал бы сам Массив: list.toArray ()

0
ответ дан 13 December 2019 в 22:20
поделиться

На самом деле Вы не должны возвращать Список, если это - платформа, по крайней мере, не думая это, рекомендуемым классом для использования является Набор. Класс Списка имеет некоторые повышения производительности за счет сервера extendability проблемы. Это - на самом деле правило FXCop.

У Вас есть обоснование для этого в этой статье

0
ответ дан 13 December 2019 в 22:20
поделиться

Возвратитесь тип для Вашего метода должен быть IList<Employee>.

Это означает, что вызывающая сторона Вашего метода может использовать что-либо это IList предложения, но не могут использовать вещи, характерные для ArrayList. Затем, если Вы чувствуете в какой-то момент это LinkedList или YourCustomSuperDuperList предложения лучшая производительность или другие преимущества можно безопасно использовать его в рамках метода и не завинтить вызывающие стороны его.

Это - примерно интерфейсы 101.;-)

0
ответ дан 13 December 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: