TSomeClass = class( TIntefacedObject, ISomeClass)
ISomeClass = interface(IInterface)
Можно поступить по-другому: объявить интерфейс соответствующего класса, присвоить созданный экземпляр класса соответствующей интерфейсной переменной, а дальше работать с ней.
Собственно это не сложно и не должно вызывать осложнений у более или менее опытного программиста. Однако, нередко возникает дилемма: стоит ли или не стоит вызывать в данном случае конструктор или освобождать память ненужного к этому времени экземпляра класса.
Первое что мы делаем: создаем экземпляр класса и присваиваем его соответствующей переменной, затем выполняем некоторую полезную работу с этим экземпляром. В заключение, после того как объект перестал быть нужным мы должны освободить выделенную под него память. Каждый раз мы должны проходить путь от
// .....Что-то еще делаем.....
SomeClass.Free;
// Удаляем экземпляр класса.
// ......................
// .....Что-то делаем.....
SomeClass:=TSomeClass.Create;
// Создаем экземпляр класса.
procedure SomeProcedure({..Что-то передаем....});
destructor Destroy; override;
constructor Create;
Давайте, вспомним, как мы все работаем с объектами. Как правило, это выглядит подобно коды на следующей врезке.
Для чего эту технику можно использовать?
Данная статья знакомит с так называемой техникой Smart pointers. Собственно это никакие не указатели. Для них не существует специальной синтаксической конструкции и ключевых слов. Правильнее под этим термином понимать технику или набор приемов, рецептов создания типов данных с автоматически распределяемой и освобождаемой памятью в Object Pascal Delphi 2009. Я бы даже определил как достаточно мощный шаблон проектирования классов в Delphi 2009 for Win32. В сочетании с другими средствами, введенными в Delphi 2009, эта техника может дать программисту на Object Pascal в руки мощные средства для написания сложных верифицируемых программ или прикладных библиотек с минимальными трудозатратами, легко воспринимаемым кодом и количеством ошибок, пониженным по сравнению с более традиционными подходами.
В поисках решения
Smart pointers в Object Pascal Delphi 2009.
Комментариев нет:
Отправить комментарий