function GetInterface2: IInterface2;
...
function TMyInterface.GetInterface2: IInterface2;
begin
Result := TInterface2.Create;
...
а именно тот момент, что я могу вызывать много раз
MyInterface1.GetInterface2.Func1()
или за кулисами оно не явно 1 раз создаст?
Не кошерно. У интерфейса в крови Supports и QueryIntrface.
Реализация должна поддерживать оба интерфейса, как, решаешь ты. Но приведенный код не идиоматичен.
ты предлагаешь заранее сделать .Create и возвращать екземпляр? или сделать проверку через QueryIntrface и .Create если нету, Intrface если есть?
Я предлагаю изучить матчасть. Ты должен использовать делегирование и аггрегацию. В любом случае, другой интерфейс ты должен проверять и возвращать в реализации через QueryInterface. А на клиенте, через IUnknown.QueryInterface или синтаксический сахарив виде Supports.
ткни носом)) посмотрю как правильно
Тяжело программировать в телеграмме. А под рукой даже не и одной инсталляции нет. Могу онлайн в телеге или Скайпе рассказать. Те будешь работать руками.
я кажется чтото нашел как минимум в конструкторе интерфейса заранее создать все что надо думаю ты мне уже чуточку помог) благодарю ключевые моменты на словах - приветствуются)
Interface aggregate Interface delegate QueryInterface Supports Вполне описаны в хелпе и литературе. И код, возвращающий интерфейс допустим, но НЕ идиоматичен/режет глаз/говорит о том, что "есть над чем работать".
Незачет. "Это другое" GetInterfaceXxx явно подменяет QueryInterface. Когда у интерфейса явный интерфейс(извините), например возвращающий ILock/ILogging(Enter/Leave) или поток, это другое.
Надо просто показывать, "Что такое хорошо, и что такое плохо".
Э-э, ты умеешь видеть семантику кода по абсолютно абстрактным названиям типа iinterface1/iinterface2/getinterface2 ?? Круто. Я так не умею
Опыт, сын ошибок трудных...
А поделишься опытом?? Вот ты сказал, что GetInterface2 подменяет QueryInterface. А из чего это следует??
По хорошему, в описанном сценарии, должен поддерживаться, типа IBuilder, который умеет создавать именно Новые экземпляры. А так, от от лени, модные красивые слова без проектирования.
Интерфейсы отражают "обобщение", абстракция проектирования. Каждый занимается своим делом. Каждый интерфейс. Есть для этого термин, единственной ответственности... SOLID кажись, но могу ошибаться,
Я представляю, что такое интерфейсы и что такое solid. Меня интересует как как ты вывел конкретную семантику из абстрактного кода.
Выглядит как "ну не согласный я"
Обсуждают сегодня