пятница, 8 февраля 2013 г.

простая реализация smart указателей

  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.

Комментариев нет:

Отправить комментарий