29 / 29 / 10
Регистрация: 06.02.2014
Сообщений: 156
|
||||||
1 | ||||||
Опять про интерфейсы. Зачем они?06.02.2014, 18:21. Показов 1390. Ответов 7
Метки нет (Все метки)
Приветствую всех формучан!
Вот начал изучать C# уже как пол года и меня мучает вопрос зачем все таки нужны интерфейсы, какой с них толк? Перечитал все что только можно по интерфейсам, в том числе и темы на этом форуме. Находил множество примеров где можно тупо убрать интерфейс. Один из примеров нашел тут. Кликните здесь для просмотра всего текста
Зачем тут нужен интерфейс? все равно же создаются экземпляры классов SimpleCode и BitCode можно просто убрать интерфейс и будит тот же результат. Разъясните пожалуйста в чем тут фишка.
0
|
06.02.2014, 18:21 | |
Ответы с готовыми решениями:
7
Зачем нужны Интерфейсы Зачем нужны интерфейсы? Зачем нужны интерфейсы? Зачем нужны интерфейсы? |
154 / 153 / 29
Регистрация: 21.05.2010
Сообщений: 338
|
||||||
06.02.2014, 19:00 | 2 | |||||
D_Sergeevich, например, вы хотите создать список из SimpleCode и список из BitCode. После этого вы хотите пробежаться по спискам и посмотреть у каждого значение encode или decode. Создавать 2 разных списка для такой цели не особо удобно. Для этого вы создаете 1 список из ICoder и добавляете в этот список как SimpleCode, так и BitCode. Теперь можно перебрать список ICoder и просмотреть значение encode или decode.
Хороший пример с интерфейсом Animal. Есть животное, которое подаёт звук. И есть наследники Cat и Dog. Cat мяукает, а Dog - лает, но все они выполняют один метод sound(), объявленный в интерфейсе Animal. Добавлено через 5 минут D_Sergeevich, вот примерчик: Кликните здесь для просмотра всего текста
2
|
57 / 57 / 11
Регистрация: 04.03.2010
Сообщений: 244
|
|||||||||||
06.02.2014, 19:00 | 3 | ||||||||||
интерфейс позволяет инкапсулировать некие действия. например вы проектируете api. делете интерфейс публичным, а класс его реализующим закрытым. далее пользователи вашего api могут работать только с интерфейсом, класс для них будет скрыт. позже вы можете полностью изменить реализацию интерфейса, при этом код пользователей ваших api останится рабочим, так как интерфейс не изменился. интерфейсы позволябт абстрагировать поведение объектов. например, поведение может меняться в зависимости от того, обладает ли объект каким-либо свойством, то есть реализует ли интерфейс, и взаимодействовать с этим объектом как с чем-то более общим, то есть
также интерфейсы позволяют использовать принцип IoC/DI. например, приведенный вами код выглядел бы следующим образом ()при использовании Unity и прокидывании через свойсвта (что не самый лучший вариант)):
1
|
29 / 29 / 10
Регистрация: 06.02.2014
Сообщений: 156
|
||||||
06.02.2014, 19:01 [ТС] | 4 | |||||
По сути Ваш пример можно сделать и так:
Кликните здесь для просмотра всего текста
0
|
154 / 153 / 29
Регистрация: 21.05.2010
Сообщений: 338
|
|
06.02.2014, 19:01 | 5 |
D_Sergeevich, добавил в первом сообщении.
0
|
29 / 29 / 10
Регистрация: 06.02.2014
Сообщений: 156
|
||||||
06.02.2014, 19:17 [ТС] | 7 | |||||
Блин в предыдущем ответе чет не все от редактировалось. Вот.
По сути Ваш пример можно сделать и так: Кликните здесь для просмотра всего текста
В данном случае отпадает же преимущество использования интерфейса? Добавлено через 3 минуты А как можно вызвать метод интерфейса при закрытом классе?
0
|
154 / 153 / 29
Регистрация: 21.05.2010
Сообщений: 338
|
||||||
06.02.2014, 19:32 | 8 | |||||
D_Sergeevich, а если вам нужно будет создать 100 кошек и собачек, вы тоже потом для каждой будете писать
и опять таки, наследование интерфейса гарантирует то, что и у кошки, и у собаки, и у льва будут методы makeSound().
0
|
06.02.2014, 19:32 | |
06.02.2014, 19:32 | |
Помогаю со студенческими работами здесь
8
Зачем нужны интерфейсы? Интерфейсы зачем их использовать Зачем нужны интерфейсы? Зачем нужны приватные интерфейсы? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |