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



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



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

821   13  

13 ответов:

назначение интерфейсов

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

аналогия 1: очень похоже на нас космический челнок, российский корабль "Союз" и китайский "Шэньчжоу-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();
   }

}

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

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

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

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

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

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

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

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

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

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

думаю remoting...

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

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

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

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

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

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

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

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

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

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

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

http://www.c-sharpcorner.com/UploadFile/rmcochran/AI_OOP_NeuralNet06192006090112AM/AI_OOP_NeuralNet.aspx

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

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

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

Comments

    Ничего не найдено.