Почему мы используем интерфейс?
Это только для стандартизации?
Почему мы используем интерфейс?
Это только для стандартизации?
Аналогия 1. Как и космический челнок США, российский космический корабль "Союз" и китайский "Шэньчжоу-5" могут состыковываться с Международной космической станцией, поскольку они реализуют один и тот же стыковочный интерфейс. (Это всего лишь пример - я не знаю, правда ли это в реальной жизни, но пусть приостановит наше недоверие ради примера)
Аналогия 2. Как вы можете подключить различные компьютерные мониторы к вашему домашнему компьютеру. Вы можете подключить к нему настенный телевизор, старую CRT (толстый вид), 20-дюймовый плоский экран или машину Брайля для слепых, чтобы "видеть" прикосновением. Там совместимость между этими различными/различными устройствами и вашими компьютер, потому что все они согласны с стандартами интерфейса.
Подробности интерфейсов С# - С интерфейсами С#/OOP вы делаете то же самое, но в невидимом/виртуальном мире.
Вы правы в стандартизации, но также гибкость, масштабируемость, расширяемость, , возможность повторного использования, testability и власть.
(Чем больше вы используете программные интерфейсы, тем больше эти слова "гудения" будут поняты. И всегда рассматривайте интерфейсы в реальном мире, потому что они сделали нас одинаково хорошо.)
Интерфейс используется для описания того, что может сделать реализованная вещь. Таким образом, у вас есть возможность обрабатывать несколько объектов, которые реализуют один и тот же интерфейс как тип этого интерфейса.
Например:
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();
}
}
Надеюсь, это немного объяснит, почему интерфейсы полезны.
Это для взаимодействия:), чтобы вы могли взаимодействовать между вещами, это полезно, когда у вас есть
Основная причина, по которой интерфейсы используются на таких языках, как С#/Java, состоит в том, что эти языки не поддерживают множественное (классовое) наследование (см. Какова конкретная проблема с множественным наследованием?).
Но допускается реализация нескольких (интерфейсов), позволяющая использовать классы по-разному.
Здесь вид высокого уровня...
Интерфейсы играют большую роль в концепции Скрытие информации.
Они в основном помогают вам скрыть детали реализации вашего класса, чтобы вызывающий класс не зависел от этой реализации. Поэтому, используя интерфейсы, вы можете изменить реализацию, не изменяя вызывающий класс. Все это по очереди ограничивает сложность вашего кода и упрощает его .
Когда я впервые начал понимать интерфейсы, они были объяснены мне как "контракт, который предоставляет описание вашего класса". Не уверен, что это вам поможет, но если вы думаете о интерфейсе для автомобиля, вы можете сказать, что он управляет, ломается и поворачивается. Так как до тех пор, пока он доставит меня из точки А в точку Б, мне не нужно знать, как эти функции реализованы.
Интерфейсы несколько неудобны. Они поддерживают дизайн по контракту, просто веря, что одно и то же имя и реализованный интерфейс означает одинаковое поведение. Это работает только благодаря документации API, она должна быть проверена человеком. Это делает интерфейсы слишком слабыми. Один из способов обойти это может быть формальной спецификацией. С другой стороны, интерфейсы слишком сильные, слишком строгие. Вы не можете развивать интерфейсы, которые часто мешают повторному использованию. Это решается протоколами - механизмом в динамических языках, которые отправляют сообщения (методы вызова), а когда это сообщение не поддерживается получателем, вызывается стандартный обратный вызов. Наличие конкретных протоколов с ограничениями было бы лучше.
Подумайте remoting...
Здесь есть клиент и сервер. Допустим, что они физически разделены Интернетом. Клиент вызывает метод, фактическое выполнение которого происходит на сервере. С точки зрения клиента клиент ничего не знает об объекте на сервере, который выполняет выполнение. Однако он знает, какой метод вызвать. Потому что, создавая клиентскую программу, мы получаем только интерфейс (или контракт). Мы не подвергаемся воздействию всего объекта, который фактически живет на сервере. Попробуйте сделать некоторые демонстрационные приложения в удаленном режиме .net, и вы увидите все остальное. Счастливое программирование.
Почему мы используем интерфейсы?
Некоторые языки реализуют вызовы полиморфных методов с использованием vtables и отбрасывают большую часть информации о типе, что затрудняет определение интерфейсов.
Поэтому иногда мы просто используем интерфейсы, потому что это требует дизайн языка.
Начиная с интерфейса, вы можете реализовать proxy, что позволяет выполнять ленивую загрузку или выполнять некоторые проверки при вызове методов конкретной реализации.
Интерфейс отделяет тип данных от логики реализации.
Интерфейс предоставляет прототип модальный, который просто содержит объявление о функциональности определенного поведения.
и если u хочет реализовать это поведение в классе, то u должен реализовать этот интерфейс в классе, тогда класс имеет такую функциональность поведения или может иметь несколько действий.
потому что класс может реализовывать несколько интерфейсов.
Если кто-то другой подобен мне и учится на примере и делает, а не только объяснение, вот какой-то код....
Я нашел эту реализацию Neural Network в С#, включая загрузку проекта, которая использует интерфейсы элегантным и полезным способом:
Ниже приводятся основные причины использования интерфейсов
пожалуйста, посетите ссылку чтобы узнать о интерфейсах с загружаемым примером кода