Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Объясните пожалуйста паттерн фабрика
Форум на CrossPlatform.RU > Разработка > С\С++
FakeMoNEy
Читаю С. Дьюхерста С++ Священные знания.
Там объясняется фабричный метод.
Вроде понятно обьект генерирует информацию о себе при этом мы не заботимся о том кто он конкретно.
Там приведен пример
class Temp : public Employee {
   public:
      //...
      TempInfo *genInfo() const
         { return new TempInfo( *this ); }
      //...
};

Temp это служащий наследуемый от Employee при этом он может генерировать информацию о себе.
class Employee {
   public:
      //...
      virtual HRInfo *genInfo() const = 0; // Фабричный метод
      //...
};

Employee *e = getAnEmployee();
//...
HRInfo *info = e>genInfo();         // используется Фабричный метод

1)TempInfo должен быть наследником HRInfo?
2)Разве все равно не придется спросить тип служащего по какой-то внутренней информации, я имею ввиду не проще было бы ввести идентификатор(номер для типа служащего) чтобы просто определять кто он(рабочий, секретарь, водитель), хотя у разных рабочих разные поля, но тогда придется спросить о его типе как использовать объект о котором мало знаешь, чем это удобно?
3)Приведите пожалуйста пример фабрики другого плана может более наглядного, читаю теорию опыта пока мало но бездумно использовать патерны не хочу, объясните суть пожалуйста.
Iron Bug
в книге приведена схема классов в UML-формате (я только что проверила книгу в онлайн). если хочешь читать книги по паттернам проектирования, изучи для начала основы схем UML для объектно-ориентированного программирования, это всегда пригодится. там нет ничего сложного, просто обозначения на схеме имеют вполне конкретные значения, которые надо знать. иначе тебе придётся постоянно задавать много вопросов.
1. да, это наследование. на схеме это указано явно.
2. обычно фабрика используется другими классами и они знают, с чем имеют дело.
3. по паттернам проектирования есть очень много книг и сайтов. и даже тут форумчане пытались создать некое подобие примеров для паттернов: http://www.wiki.crossplatform.ru/index.php/Design_Patterns
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.