Стратегии проектирования управления памятью Delphi: Объект или Интерфейс?

Относительно управления памятью Delphi, каковы Ваши стратегии проектирования?

  • Каковы варианты использования, где Вы предпочитаете создавать и выпускать Объекты вручную?
  • Каковы случаи использования, где Интерфейсы, InterfacedObjects и их механизм подсчета ссылок будут предпочтены?

Вы имеете определенными некоторые прерывания или трудности со ссылкой считаемые объекты?

Спасибо за то, что обменялись Вашим опытом здесь.

7
задан Bruce McGee 31 March 2010 в 11:04
поделиться

2 ответа

Всякий раз, когда вы делитесь объектами между потоками, лучше использовать интерфейсы. Общий объект не обязательно имеет одного идентифицируемого владельца, поэтому позволить потоку, который отдает последнюю ссылку на интерфейс, освободить реализующий объект, естественно.Смотрите OmniThreadLibrary для хорошего примера того, как использовать интерфейсы как для проектирования, так и для преодоления некоторых сложных проблем владения в многопоточном коде.

7
ответ дан 7 December 2019 в 05:20
поделиться

Вы всегда должны отдавать предпочтение интерфейсам, если это невозможно из-за ограничений VCL. Я подозреваю, что если бы интерфейсы были доступны в Delphi 1.0, VCL выглядела бы совсем иначе.

Одно второстепенное соображение - следить за эталонными циклами. Если A имеет интерфейс с B, а B содержит интерфейс с A, они оба будут жить вечно.

1
ответ дан 7 December 2019 в 05:20
поделиться
Другие вопросы по тегам:

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