crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Объясните пожалуйста паттерн фабрика
FakeMoNEy
  опции профиля:
сообщение 3.7.2013, 22:43
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 27.11.2012
Пользователь №: 3612

Спасибо сказали: 0 раз(а)




Репутация:   0  


Читаю С. Дьюхерста С++ Священные знания.
Там объясняется фабричный метод.
Вроде понятно обьект генерирует информацию о себе при этом мы не заботимся о том кто он конкретно.
Там приведен пример
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
  опции профиля:
сообщение 4.7.2013, 18:42
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


в книге приведена схема классов в UML-формате (я только что проверила книгу в онлайн). если хочешь читать книги по паттернам проектирования, изучи для начала основы схем UML для объектно-ориентированного программирования, это всегда пригодится. там нет ничего сложного, просто обозначения на схеме имеют вполне конкретные значения, которые надо знать. иначе тебе придётся постоянно задавать много вопросов.
1. да, это наследование. на схеме это указано явно.
2. обычно фабрика используется другими классами и они знают, с чем имеют дело.
3. по паттернам проектирования есть очень много книг и сайтов. и даже тут форумчане пытались создать некое подобие примеров для паттернов: http://www.wiki.crossplatform.ru/index.php/Design_Patterns

Сообщение отредактировал Iron Bug - 4.7.2013, 22:59
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.1.2025, 21:08