Да, это всё одна и та же тема. Причём мне кажется, что она имеет все шансы быть "неисчерпаемой", поскольку IMHO - это грабли: замешать парадигму интерфейсов с другой, совершенно параллельной - автоматическим подсчётом ссылок. И если первая в Delphi выглядит совершенно естественно (действительно, полиморфизм за рамками общего предка более чем востребован) то к внедрению второй, IMHO следовало основательно подготовиться, поскольку в Pascal автоматизированного управления ресурсами никогда не было. Отсюда и использование интерфейсов не по назначению, т.е. тогда, когда требуется рефкаунтинг, и наоборот - возня с этим рефкаунтингом, когда он совершенно не нужен — как в описанном мною случае, например.
Что касается Вашей сслки, то вот сижу сейчас и думаю, что не стал заострять в своей статье на этом внимание, но боюсь что то, что неявное получение интерфейса из объекта при обращении к моей процедуре ExecuteInterfaceTests — не очевидно, хотя понятно, что интерфейсная ссылка появляется внутри этой процедуры, а не в вызывающем коде. Это к тезису «неисчерпаемости» темы интерфейсных ссылок и их контекста.
«У меня лично - "смутные ощущения" от написанного. Скажу лишь, что это полезно прочитать.»
ОтветитьУдалить-- Поделитесь. Очень интересно Ваше мнение на этот счёт.
Возможно, я невнятно изложил проблему?
ОтветитьУдалитьВнятно, даже чересчур :)
УдалитьПозвольте я Вам оставлю пару ссылок на Александра Алексеева:
Задачка №13
Ответ на задачку №13
"Возможно, я невнятно изложил проблему?"
Удалить-- Не хочу никого обидеть, но! Если бы я лично не знал бы проблему - я бы не понял бы "о чём речь".
Наверное это "мои проблемы".
Вот Николай - понял и правильно привёл ссылку из GunSmoker'а.
Но (ИМХО) у GunSmoker'а гораздо более чётко определена ПРОБЛЕМА и РЕШЕНИЕ.
Удалитьhttp://18delphi.blogspot.ru/2013/04/blog-post_29.html
ОтветитьУдалитьДа, это всё одна и та же тема.
УдалитьПричём мне кажется, что она имеет все шансы быть "неисчерпаемой", поскольку IMHO - это грабли: замешать парадигму интерфейсов с другой, совершенно параллельной - автоматическим подсчётом ссылок.
И если первая в Delphi выглядит совершенно естественно (действительно, полиморфизм за рамками общего предка более чем востребован) то к внедрению второй, IMHO следовало основательно подготовиться, поскольку в Pascal автоматизированного управления ресурсами никогда не было.
Отсюда и использование интерфейсов не по назначению, т.е. тогда, когда требуется рефкаунтинг, и наоборот - возня с этим рефкаунтингом, когда он совершенно не нужен — как в описанном мною случае, например.
Что касается Вашей сслки, то вот сижу сейчас и думаю, что не стал заострять в своей статье на этом внимание, но боюсь что то, что неявное получение интерфейса из объекта при обращении к моей процедуре ExecuteInterfaceTests — не очевидно, хотя понятно, что интерфейсная ссылка появляется внутри этой процедуры, а не в вызывающем коде.
Это к тезису «неисчерпаемости» темы интерфейсных ссылок и их контекста.
Я кстати когда-то писал про "контракты vs. интерфейсы".
УдалитьНе могу пока найти ссылку.
А тема - ДЕЙСТВИТЕЛЬНО "неисчерпаема".
УдалитьВот пока "собрал ссылки" - http://programmingmindstream.blogspot.ru/2014/10/arc.html
Удалить