Интерфейсы
От: Ocenochka  
Дата: 01.06.07 22:06
Оценка:
Я правильно понимаю, что интерфейсы имеет смысл писать только для тех классов, которые:
— втунри компонента(сборки) могут быть представленые несколькими реализациями; (для удобства подмены класса)
— которые торчат из сборки; (для удобства развертывания).
Интерфейсы, на мой взгляд, похожи на промежуточный вариант между строго-типизированным программированием и
программированием с динамической типизацией. Вообще, я вижу противоречие: с одной стороны все хотят знать все о своем коде еще при компиляции, а
с другой стороны — имть возможность оперировать какими угодно объектами в каких угодно контекстах, т.е. приводить объекты к разным интерфесам в ран-тайме.
Поясните, пожалуйста.
Люблю ставить оценки.
Re: Интерфейсы
От: Осака Вестингауз  
Дата: 02.06.07 06:49
Оценка: 2 (1)
Здравствуйте, Ocenochka, Вы писали:

O>Поясните, пожалуйста.

В первую очередь без интерфейсов не разрешить циклические зависимости. Например, класс А использует Б, Б использует А, находятся в разных сборках — не компилируется. Нужно выносить описание одного из них в интерфейс в независимую сборку, и определять оба через этот интерфейс, а не через друг друга.
Друга ищи не того, кто любезен с тобой, кто с тобой соглашается, а крепкого советника, кто полезного для тебя ищет и противится твоим необдуманным словам.
Re[2]: Интерфейсы
От: Keith  
Дата: 02.06.07 13:36
Оценка:
O>>Поясните, пожалуйста.
ОВ>В первую очередь без интерфейсов не разрешить циклические зависимости. Например, класс А использует Б, Б использует А, находятся в разных сборках — не компилируется. Нужно выносить описание одного из них в интерфейс в независимую сборку, и определять оба через этот интерфейс, а не через друг друга.
Приведите, пожалуйста, пример из жизни — никак не могу придумать в каком контексте нужно так извращаться?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Интерфейсы
От: Осака Вестингауз  
Дата: 03.06.07 09:13
Оценка:
Здравствуйте, Keith, Вы писали:

K> Приведите, пожалуйста, пример из жизни

Накладная определяется через счёт (class Invoice: Bill). Сборка Invoice.dll содержит reference на Bill.dll. Понадобилось в счёте обратиться к накладной и получить, скажем, склады, чтобы вычислить время доставки и вписать в примечание (а в счёте складов нет, появляются только в накладной, приводить Invoice к Bill бесполезно). Сборку Invoice в ссылки к Bill не добавить — циклическая зависимость. Как ещё обратиться к свойствам Invoice?
Друга ищи не того, кто любезен с тобой, кто с тобой соглашается, а крепкого советника, кто полезного для тебя ищет и противится твоим необдуманным словам.
Re: Интерфейсы
От: GlebZ Россия  
Дата: 03.06.07 10:35
Оценка:
Здравствуйте, Ocenochka, Вы писали:

O> Я правильно понимаю, что интерфейсы имеет смысл писать только для тех классов, которые:

O>- втунри компонента(сборки) могут быть представленые несколькими реализациями; (для удобства подмены класса)
O>- которые торчат из сборки; (для удобства развертывания).
Основная решаемая проблема — замена "наследования реализации". Можешь по этим словам поискать на данном сайте. Неоднократно обсуждалось.


O> Интерфейсы, на мой взгляд, похожи на промежуточный вариант между строго-типизированным программированием и

O>программированием с динамической типизацией.
Динамич. типизация и строготипизированность — перпендикулярны друг другу.
Re[4]: Интерфейсы
От: Keith  
Дата: 03.06.07 12:31
Оценка:
K>> Приведите, пожалуйста, пример из жизни
ОВ>Накладная определяется через счёт (class Invoice: Bill). Сборка Invoice.dll содержит reference на Bill.dll. Понадобилось в счёте обратиться к накладной и получить, скажем, склады, чтобы вычислить время доставки и вписать в примечание (а в счёте складов нет, появляются только в накладной, приводить Invoice к Bill бесполезно). Сборку Invoice в ссылки к Bill не добавить — циклическая зависимость. Как ещё обратиться к свойствам Invoice?

Как необычно, объектная модель одной и той же предметной области — в разных сборках... Не думал, что такое бывает. А зачем?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Интерфейсы
От: Ocenochka  
Дата: 03.06.07 12:58
Оценка:
O>> Я правильно понимаю, что интерфейсы имеет смысл писать только для тех классов, которые:
O>>- втунри компонента(сборки) могут быть представленые несколькими реализациями; (для удобства подмены класса)
O>>- которые торчат из сборки; (для удобства развертывания).
GZ>Основная решаемая проблема — замена "наследования реализации". Можешь по этим словам поискать на данном сайте. Неоднократно обсуждалось.
Я думал, это механихм повторного использования когда в ситуации, когда существует зависимость типа "является"... Ладно. Понял. Вопрос спорный.

O>> Интерфейсы, на мой взгляд, похожи на промежуточный вариант между строго-типизированным программированием и

O>>программированием с динамической типизацией.
GZ>Динамич. типизация и строготипизированность — перпендикулярны друг другу.
Я так и написал. А так же я написал, что не понимаю, как технологии могут стремится к противоположностям.
Люблю ставить оценки.
Re[5]: Интерфейсы
От: Осака Вестингауз  
Дата: 03.06.07 13:52
Оценка:
Здравствуйте, Keith, Вы писали:

K> Как необычно, объектная модель одной и той же предметной области — в разных сборках...

Это уже как душа пожелает, где проводить границы между предметными областями и какими единицами развёртывать. Некоторые вообще 10-метровый *.exe на все пользовательские машины каждый день копируют, и ничего, довольны.

K> Не думал, что такое бывает. А зачем?

"Понимание приходит с опытом."
Друга ищи не того, кто любезен с тобой, кто с тобой соглашается, а крепкого советника, кто полезного для тебя ищет и противится твоим необдуманным словам.
Re: Интерфейсы
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 04.06.07 02:50
Оценка: 3 (1)
Здравствуйте, Ocenochka, Вы писали:

3 копейки в кучу:
Использование инверсии управления (IoC) в сигнатурах методов
... << RSDN@Home 1.2.0 alpha rev. 677>>
Re[2]: Интерфейсы
От: Delight  
Дата: 04.06.07 07:28
Оценка: +3
Здравствуйте, Осака Вестингауз, Вы писали:

ОВ>В первую очередь без интерфейсов не разрешить циклические зависимости.


Не назвал бы это "в первую очередь"
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Интерфейсы
От: IB Австрия http://rsdn.ru
Дата: 04.06.07 11:07
Оценка: +4
Здравствуйте, Ocenochka, Вы писали:

O> Я так и написал.

Нет, ты написал не так.

O> А так же я написал, что не понимаю, как технологии могут стремится к противоположностям.

Перпендикулярно != противоположно. Динамическая типизация, не является противоположностью строгой типизации.
Это две совершенно разные характеристики, типизация может быть динамической/статической и, в то же время, слабой/строгой.

Чтоже касается первоначального вопроса, то интерфейс — это встроеный в язык способ, явно описать контракт взаимодействия между сущностями системы.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Мы уже победили, просто это еще не так заметно...
Re: Интерфейсы
От: Аноним  
Дата: 04.06.07 12:27
Оценка: 3 (1)
Здравствуйте, Ocenochka, Вы писали:

зачем нужны интерфейсы
Автор:
Дата: 04.04.07
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.