169 похожих чатов

Скажите, тут нет проблемы? IMyInterface1 = interface

function GetInterface2: IInterface2;
...
function TMyInterface.GetInterface2: IInterface2;
begin
Result := TInterface2.Create;
...

а именно тот момент, что я могу вызывать много раз
MyInterface1.GetInterface2.Func1()

или за кулисами оно не явно 1 раз создаст?

18 ответов

87 просмотров

Не кошерно. У интерфейса в крови Supports и QueryIntrface.

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

Ruslan-aka DUDE Автор вопроса
Alexey Gavrilov
Не кошерно. У интерфейса в крови Supports и QueryI...

ты предлагаешь заранее сделать .Create и возвращать екземпляр? или сделать проверку через QueryIntrface и .Create если нету, Intrface если есть?

Ruslan aka DUDE
ты предлагаешь заранее сделать .Create и возвращат...

Я предлагаю изучить матчасть. Ты должен использовать делегирование и аггрегацию. В любом случае, другой интерфейс ты должен проверять и возвращать в реализации через QueryInterface. А на клиенте, через IUnknown.QueryInterface или синтаксический сахарив виде Supports.

Ruslan-aka DUDE Автор вопроса
Ruslan aka DUDE
ткни носом)) посмотрю как правильно

Тяжело программировать в телеграмме. А под рукой даже не и одной инсталляции нет. Могу онлайн в телеге или Скайпе рассказать. Те будешь работать руками.

Ruslan-aka DUDE Автор вопроса
Alexey Gavrilov
Тяжело программировать в телеграмме. А под рукой д...

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

Ruslan aka DUDE
я кажется чтото нашел как минимум в конструкторе и...

Interface aggregate Interface delegate QueryInterface Supports Вполне описаны в хелпе и литературе. И код, возвращающий интерфейс допустим, но НЕ идиоматичен/режет глаз/говорит о том, что "есть над чем работать".

Незачет. "Это другое" GetInterfaceXxx явно подменяет QueryInterface. Когда у интерфейса явный интерфейс(извините), например возвращающий ILock/ILogging(Enter/Leave) или поток, это другое.

Надо просто показывать, "Что такое хорошо, и что такое плохо".

Alexey Gavrilov
Незачет. "Это другое" GetInterfaceXxx явно подменя...

Э-э, ты умеешь видеть семантику кода по абсолютно абстрактным названиям типа iinterface1/iinterface2/getinterface2 ?? Круто. Я так не умею

Alexey Gavrilov
Опыт, сын ошибок трудных...

А поделишься опытом?? Вот ты сказал, что GetInterface2 подменяет QueryInterface. А из чего это следует??

По хорошему, в описанном сценарии, должен поддерживаться, типа IBuilder, который умеет создавать именно Новые экземпляры. А так, от от лени, модные красивые слова без проектирования.

Jack128
А поделишься опытом?? Вот ты сказал, что GetInterf...

Интерфейсы отражают "обобщение", абстракция проектирования. Каждый занимается своим делом. Каждый интерфейс. Есть для этого термин, единственной ответственности... SOLID кажись, но могу ошибаться,

Alexey Gavrilov
Интерфейсы отражают "обобщение", абстракция проект...

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

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта