![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
RinOSpro |
|
|||
Unregistered |
Читал про интерфейсы... http://www.interface.ru/home.asp?artId=5859 и остановился на вот этом: 6.10. Реализация интерфейса вложенным объектом.
И ни как не могу дойти что это и для чего это нужно...
Объясните плиз! Это сообщение отредактировал(а) RinOSpro - 6.8.2008, 11:18 |
|||
|
||||
Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Это значит, что если у тебя есть объект, которые должен реализовывать интерфейс, который уже реализован вложенным объектом. И реализация этого интерфейса не должна быть точно такой же как у вложенного. ЭТо значит что тебе не надо создавать методы реализующие интерфейс, и вызывать в них соответствующие методы вложенного объекта. Или в ручную их связывать, достаточно делегировать... Это можно применять в тех случаях когда сложный объект состоит из множества вложенных, и должен реализовывать интерфейсы, которые итак уже реализованы вложенными. -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Представь что твой класс использует стратегии для изменения своего поведения и адаптации к новым условиям. Объект TTextParser создает объекты разных классов и получает их интерфейс в FTextReader. В зависимости от тогочто он создаст поведение объекта меняется. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
RinOSpro |
|
||||
Unregistered |
![]() Felan - честно не совсем понимаю... Может когда столкнусь дойдет... Вот к премеру с какой целью в класс засовывать его же интерфейс:
|
||||
|
|||||
pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
это не его интерфейс, а интерфейс который он реализует. и его могут реализовывать другие классы, не только потомки TTextParser. -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 70 Всего: 191 |
|
|||
|
||||
Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Как тебе уже сказали, это не "его" интерфейс. Интерфейс это контракт, который собственно никак не связан с классом. Не надо путать его с интерфейсом класса, где интерфейс класса - это набор методов и свойств класса, как правило публичных. Так что интерфейс и интерфейс класса это просто слова похожие, а на самом деле это разные вещи, если можно так сказать. То, что класс реализует нейкий интерфейс (не интерфейс класса), это не значит, что у этого класса не может быть других методов. Класс может реализовывать несколько интерфейсов... Вообще-то в той книге, где ты это вычитал все это есть... Если это сделано, то например в процедуру принимающую параметра типа какого-либо интерфейса могут быть переданы любые объеты реализующие этот интерфейс. Они не обязательно должны быть в одном дереве наследования, как в случае с базовым классом. Это называется полиморфизм. Попробуй почитать про паттерны проектирования, в особенности паттерны "Команда", "Фабрика", "Фабричный метод". Там это используется. Это используется в проектировании архитектуры классов. -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |