Почему мы используем интерфейс? Это только для стандартизации? [закрыто

StackOverflow https://stackoverflow.com/questions/2026054

  •  19-09-2019
  •  | 
  •  

Вопрос

Почему мы используем интерфейс?

Это только для стандартизации?

Это было полезно?

Решение

Цели интерфейсов

  • Создать слабо связанное программное обеспечение
  • поддерживать Дизайн по контракту (Реализатор должен предоставить весь интерфейс)
  • Разрешить платящее программное обеспечение
  • Разрешить разные объекты легко взаимодействовать
  • скрыть детали реализации классов друг от друга
  • облегчить повторное использование программного обеспечения

Аналогия 1: Так же, как американский космический челнок, Российский Союз Союз космический корабль и китайский Shenzhou 5 могут пристаться к Международной космической станции, потому что они реализуют один и тот же интерфейс стыковки. (Это просто пример - я не знаю, правда ли это в реальной жизни, однако давайте приостановим наше неверие ради примера)

Аналогия 2: Как вы можете подключить различные компьютерные мониторы к домашнему компьютеру. Вы можете подключить к нему телевизор размером с стены, старый ЭЛТ (толстый вид), 20-дюймовый плоский экран или машину Брайля, чтобы слепы Компьютер, потому что все они согласны с стандартами интерфейса.

Детали интерфейсов C# - С интерфейсами C#/OOP вы делаете то же самое, но в невидимом/виртуальном мире.

Вы правы стандартизация, но и Гибкость, масштабируемость, расширяемость, обслуживание, повторный использование, тестируемость а также сила.

(Чем больше вы используете программные интерфейсы, тем больше эти «модные слова» будут поняты. И всегда рассматривайте интерфейсы в реальном мире, потому что они сделали нас одинаково хорошо.)

Другие советы

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

Например:

public interface IMyInterface{
    public void DoFirst();
    public int DoSecond();
}


public class A : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blubb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blubb2");
     return 2;  
   }
}

public class B : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blibb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blibb2");  
     return 4;
   }
}

Классы реализуют интерфейс несколькими способами. Но вы можете использовать их как imyinterface. Например:

public static void DoMethodsInInterface(IMyInterface inter){
    inter.DoFirst();
    inter.DoSecond();
}


public static void main(){

   DoMethodsInInterface(new A());
   DoMethodsInInterface(new B());
   //Or use it in a List
   List<IMyInterface> interlist = new List<IMyInterface>();
   interlist.Add(new A());
   interlist.Add(new B());
   foreach(IMyInterface inter in interlist){
      inter.DoFirst();
   }

}

Я надеюсь, что это немного ясно, почему интерфейсы полезны.

Это для взаимодействия :), чтобы вы могли взаимодействовать между вещами, это полезно, когда у вас есть

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

Вот вид высокого уровня ...

Интерфейсы играют большую роль в концепции Информация скрывается.

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

Когда я впервые начал понимать интерфейсы, они были объяснены мне как «контракт, который дает описание вашего класса». Не уверен, поможет ли это, но если вы думаете о интерфейсе для автомобиля, вы можете сказать, что это приводы, перерывы, а также повороты. Анкет Поэтому, пока это доставляет меня от точки A в точку B, мне не нужно знать, как реализованы эти функции.

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

Но реализация нескольких (интерфейс) разрешена, позволяя использовать классы различными способами.

Интерфейсы несколько неловкие. Они поддерживают дизайн по контракту, просто поверив, одно и то же имя и реализованный интерфейс означает то же поведение. Это работает только благодаря документации API, оно должно быть проверено человеком. Это делает интерфейсы слишком слабыми. Одним из способов обойти это может быть официальные характеристики. С другой стороны, интерфейсы слишком сильны, слишком строги. Вы не можете развивать интерфейсы, которые часто мешают повторному использованию. Это решается по протоколам - механизм в динамических языках, которые отправляют сообщения (методы вызова), и когда это сообщение не поддерживается приемником, называется стандартный обратный вызов. Наличие конкретных протоколов с ограничениями было бы лучше.

Считать удаленный...

Здесь есть клиент и сервер. Допустим, они физически разделены интернетом. Клиент вызывает метод, фактическое выполнение которого происходит на сервере. С точки зрения клиента клиент ничего не знает об объекте на сервере, который выполняет выполнение. Однако он знает, какой метод позвонить. Потому что при создании клиентской программы мы подвергаемся воздействию интерфейса (или контракта). Мы не подвергаемся воздействию всего объекта, который фактически живет на сервере. Попробуйте сделать несколько демонстрационных приложений в удаленном .NET, и вы поймете все остальное. Счастливого программирования.

Почему мы используем интерфейсы?

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

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

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

Интерфейс отделяет тип данных от логики реализации.

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

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

Потому что класс может реализовать несколько интерфейса.

Если кто -то еще похож на меня и учится по примеру и делаю, а не только объяснение, вот какой -то код ....

Я нашел эту реализацию нейронной сети в C#, включая загрузку проекта, которая использует интерфейсы элегантным и полезным образом:

http://www.c-sharpcorner.com/uploadfile/rmcochran/ai_oop_neuralnet06192006090112am/ai_oop_neuralnet.aspx

Ниже приведены основные причины использования интерфейсов

  1. Расширяемость
  2. Внедрение скрыта
  3. Доступ к объекту через интерфейсы
  4. Слабая связь.

Пожалуйста, посетите это ссылка на знать о интерфейсах с загружаемым примером кода

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top