Это шаблон проектирования, по сути класс, который позволяет спрятать от программиста непосредственный вызов new и вернуть указатель на интерфейс вновь созданного объекта. Шаблон проектирования позволяет решить несколько проблем." писал(а):Что такое фабрика
- Правильное выбранное имя фабричного метода самодокументирует код, в то время, как вызов оператора с кучей переменных часто может быть не прозрачен.
- Вызывающий код не знает о том, объект какого именно класса будет создан, его интересует только то, какой интерфейс этот объект имплементирует, таким образом уменьшается количество связей в проекте.
- Имплементация может быть подменена в любой момент, при этом вызывающий код не только не измениться, но даже не потребует перекомпиляции.
- Создающие методы фабрики могут выполнять какие-то дополнительные функции, которые пришлось бы дублировать во всех местах непосредственного создания объекта, если бы фабрика не использовалась.
- Расширение шаблона проектирования до абстрактной фабрики позволяет решить ещё одну проблему: создание объектов сложных иерархий и незаметная для пользователя подмена имлементаций целых иерархий или отдельных их частей.
В двух словах о рефкаунтинге я уже сказал выше, читай внимательней. Суть рефкаунтинга вот в этом предложении:" писал(а):...и рефкаунтинг?
" писал(а):...сделать легковесный темплейт враппер, который хранит указатель на структурку, в которой содежится указатель и счётчик ссылок на этот указатель. В конструкторе счётчик++, в деструкторе счётчик-- и если счётчик == 0 то delete указатель.
Design Patterns: Elements of Reusable Object-Oriented Software" писал(а):Где взять серьёзну книгу с текстом и примерами на эту тему?
Погугли, книга достаточно популярна, и найти её в интернете в электронном виде не составляет проблемы. Советую именно англоязычный вариант, ибо русский перевод содержит некоторые неточности, хотя они и не критичны.