![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Сам по себе switch ничем не плох, просто конструкции, где используется switch, расширяются исключительно вручную.
С помощью шаблонов же можно обеспечить такую масштабируемость, что при добавлении новых производных классов будет изменяться только клиентский код (т.е. код, где этот новый тип объявляется и реализуется). Что касается производительности, то при создании новых объектов вовсе не выбор выполняемого кода является критичным, а операция выделения памяти и инициализация нового объекта. Очевидно, что для простых объектов типа int и огород городить нечего. Так что на издержки выбора из map можно смело наплевать. Вот пример очень простой фабрики:
Это пример довольно примитивной фабрики, только для того, чтобы проиллюстрировать идею. Далее можно усложнять: вместо указателя на фукцию использовать объект boost::function, сделать factory синглетоном, добавить варианты создания с параметрами, наконец, параметризовать базовый тип,... просто бесконечные возможности. -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |