Интерфейс сомнений - PullRequest
       4

Интерфейс сомнений

0 голосов
/ 19 декабря 2011

Являются ли интерфейсы слоем между объектами (разными объектами) и действиями (разные типы объектов пытаются выполнить одно и то же действие)?и Интерфейс проверяет, что это за объект и как он может выполнять определенное действие?

Ответы [ 3 ]

2 голосов
/ 19 декабря 2011

Я бы сказал, что лучше воспринимать интерфейс как обещание.В Java есть конструкция интерфейса, которая позволяет наследовать API, но не определяет поведение.Тем не менее, в целом интерфейс состоит из методов, которые объект представляет для взаимодействия с объектом.

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

Применение интерфейса является сложным, поскольку вам необходимо указать некоторый набор критериев поведения.Интересным примером были бы идеи дизайна по контракту в Eiffel.

0 голосов
/ 19 декабря 2011

Чтобы понять интерфейсы в .net или Java, нужно сначала признать, что наследование объединяет две концепции:

  1. Реализации производного типа будут включать все поля (включая частные) базового типа,и может получить доступ ко всем открытым или защищенным элементам базового типа, как если бы он был его собственным.
  2. Объекты производного типа могут свободно использоваться вместо объектов базового типа.

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

С другой стороны, разрешение заменять объекты более чем одним другим типом объекта не создает этих трудностей.Объект, представляющий таблицу базы данных, может, например, позволить себе быть переданным подпрограмме, которая хочет «вещь, которая может перечислять содержимое, которое имеет тип T (IEnumerable in .net)», или подпрограмме, которая хочет«вещь, к которой могут быть добавлены вещи типа T» (ICollection в .net), или вещь, которая хочет «вещь, которая хочет знать, когда она больше не нужна (IDisposable в .net)».Обратите внимание, что есть некоторые вещи, которые требуют уведомления, когда они больше не нужны, которые не представляют перечислимые коллекции, и есть другие вещи, которые представляют перечисляемые коллекции, которые могут быть оставлены без уведомления.Таким образом, ни один тип объекта не может наследоваться от другого, но если один использует интерфейс для представления «вещей, которые могут перечислять свое содержимое, которые имеют тип T», или «вещей, которые хотят знать, когда они больше не нужны»,тогда нет проблем, если классы реализуют оба интерфейса.

0 голосов
/ 19 декабря 2011

Вы спрашиваете о термине "интерфейс", который используется в определенном языке (например, Java или Objective-C), или об общем значении этого термина?

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

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

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