лько в factory(), конструкторы
Автор admin Суббота, 20 июня 2009 11:32
лько в factory(), конструкторы конкретных подтипов Shape объявлены закрытыми, а тип Shape — дружественным (friend), чтобы функция factory() имела доступ ко всем конструкторам (дружественной можно объявить только функцию Shape::factory(), но, похоже, объявление дружественным всего базового класса никаких проблем не создаст). У этой архитектуры есть еще одна важная особенность: базовый класс Shape должен располагать полной информацией обо всех производных классах, что считается нежелательным в объектно-ориентированных архитектурах. Если базовый класс приходится обновлять с включением каждого нового типа, расширение библиотеки начинает порождать слишком много проблем. Чтобы избежать этой нежелательной циклической зависимости, следует воспользоваться полиморфными фабриками, описанными в следующем разделе. Полиморфные фабрики Статическая функция factory() из предыдущего примера позволяла сосредоточить все операции создания объектов в одном месте (единственном, в котором вносились изменения в программу). Бесспорно, это вполне разумное решение, обеспечивающее хорошую инкапсуляцию процесса создания объектов. Те
Комментарии закрыты.
Последние комментарии