Абстрактные классы - это, как раз, оди из способов скрыть реализацию, или расширить полиморфность объектов. Называть это костылями непрофессионально. Вы еще скажите, что интерфейсы - тоже костыли.
>_< Некоторые паттерны проектирования почти не отличаются между собой физически, но довольно сильно - назначением использования. Так и здесь, абстрактные классы, безусловно, полезны и нужны, и если в коде нет интерфейсов, то это скорее более развитый процедурный код, чем код с действительным ООП. Но использовать их, чтобы заткнуть дырку областях видимости - это костыль.
Да, я так считаю, потому, что данные не размазаны по разным объектам, и всегда согдасованы. Это уменьшает сложность кода, и предотвращает ошибки реализации.
хорошо, кеш под запретом. Но держать ссылку на инкапсулированый нужный метод объекта в котором сосредоточены требуемые данные - это тоже архитектурно неверно?
Более того, ситуации, когда один подчинённый элемент может содержаться только в одном владельце в вашем случае будет просто излишне усложнена.
Вообщето юниты это плюс паскаля
То что Interface и Implementation части модуля находятся в одном исходном файле - это несомненный плюс. А то что нынешняя реализация этих модулей заставляет меня держать связанные классы в одном модуле - это минус. Мир не черно-белый.
>>А то и вообще, отказываться от прямых перекрестных ссылок между объектами
Да, надо отказываться - 99.[9]% багов будут от неподдержания этих ссылок в актуальном состоянии
Тут мне нечего сказать... И как только LCL/FCL и прочие библиотеки до сих пор работают ещё, непонятно...
Самое главное, что Вы легко можете задать такое условие, которое невыполнимо
условия
одно. В некоторых вариациях (но не меняясь по сути своей) оно встречается и самой первой страницы обсуждения. И оно действительно невыполнимо в текущей реализации модульной системы.
Все-таки я не могу поверить, что люди серьёзно могут считать, что иметь от одного класса ссылку на другой, который в свою очередь ссылается на первый - это плохо и неудобно. А что желание не создавать для этого абстрактный класс (причем использовать его не по назначению, из-за чего его нужно постоянно держать в актуальном состоянии и мириться с совершенно неоправданными накладными расходами) - порочно.