|
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
|
|
Кто должен регистрировать класс в фабрике?12.04.2016, 11:27. Показов 1662. Ответов 12
Метки нет (Все метки)
Доброго времени суток. Наверняка вопрос простой, но раньше я над этим не задумывался. Сейчас у меня есть фабрика классов с методами Add и Create. И в своей программе я вызываю Add для нескольких классов. Но задумался, ведь чтобы добавить новый класс, нужно каждый раз не забыть добавить его в фабрику. Получается, что нужна функция класса, которая сама себя как бы регистрирует. Но нормально ли это, ведь класс не должен вроде бы ничего знать про окружающий мир и что его добавляют в некую фабрику. Как делают гуру?)
Добавлено через 25 минут перешел на поиск английских топиков, понял что моя проблема заключается в механизме автоматической регистрации объектов в фабрике. но пока примера с ответом не нашел
0
|
|
| 12.04.2016, 11:27 | |
|
Ответы с готовыми решениями:
12
Кому должен принадлежать курортный бизнес в современной России? Кто должен осваивать Крым? Зачем регистрировать класс таким образом? |
|
14138 / 9366 / 1350
Регистрация: 21.01.2016
Сообщений: 35,219
|
|
| 12.04.2016, 12:41 | |
|
xTr1m, тебе нужен "корень композиции" - некое место в коде, откуда "расходятся" все зависимости и где будет происходить настройка фабрик/локаторов. В любом приложении есть как минимум одно такое место (main или Application или подобное).
0
|
|
|
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
|
|
| 12.04.2016, 14:58 [ТС] | |
|
Вы знаете, за ссылку спасибо, там тоже много нового для меня)) но все-таки мне кажется, что мне нужна именно саморегистрация класса в фабрике. У меня есть приложение и мне нужно, чтобы для добавления нового функционала нужно было добавить лишь h/cpp файл. и всё само подцепилось и заиграло. а этого я могу достичь лишь тогда, когда класс сам будет давать о себе знать. вот только работающего примера не вижу. был один, но там есть затык с порядком инициализации статических переменных. то есть, иногда работает, а иногда нет)) стандарт оказывается это не оговаривает. вроде бы частая штука должна быть?(
0
|
|
|
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 12.04.2016, 15:09 | |||
|
0
|
|||
|
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
|
|
| 12.04.2016, 15:22 [ТС] | |
|
То есть я зря ищу "святой грааль"?) Нашёл я один пример, но там всё равно в каждом классе нужно явно "дернуть функцию" регистрации. а хотелось ведь, чтобы код был написан так, чтобы если не вызвал регистрацию, то компилятор ругнулся бы.
0
|
|
|
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 12.04.2016, 15:24 | |
|
0
|
|
|
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
|
|
| 12.04.2016, 15:32 [ТС] | |
|
Так в райнтайме я не знаю что должно быть.Плюс я еще планирую типа плагинов делать, а значит точно нужно на этапе компиляции
0
|
|
|
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 12.04.2016, 15:39 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||
| 12.04.2016, 19:49 | ||||||||||||
|
в любом случае придется написать код, который приведет в действие процедуру регистрации. и в любом случае можно ничайно забыть это сделать. вопрос лишь в том, сколько придется при этом написать кода. в остальном, чем меньше знает класс об окружающем мире, тем он проще, и тем проще с ним работать. ну а вообще, помимо классической "внешней регистрации", есть подходы наподобие:
вам нужно понять: лучше так, как тупо удобнее, и проще.
0
|
||||||||||||
|
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
|
||||||
| 12.04.2016, 23:34 [ТС] | ||||||
|
Спасибо. В результате я так и сделал, каждый объект представляет собой что-то типа
0
|
||||||
|
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 13.04.2016, 15:07 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 13.04.2016, 19:06 | |||||||
|
гарантированно имеют иммунитет против static-order-fiasco собственно, поэтому их можно опредять прямо в хедерах. и это можно использовать: http://rextester.com/CCDU88408
2
|
|||||||
|
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
|
|
| 14.04.2016, 17:24 [ТС] | |
|
Wow. Крутой подход. Использовал у себя. Большое спасибо
0
|
|
| 14.04.2016, 17:24 | |
|
Помогаю со студенческими работами здесь
13
Описать абстрактный класс породить от него еще два,один должен остаться абстрактным,другой должен быть способен пораждать объекты Опишите координационный класс. Класс должен состоять из двух целых чисел k, n (k <n) Создайте класс, в котором есть ostream& operator<<. Класс должен содержать очередь с приоритетом
кто должен заплатить за порванные рекламой динамики на телевизоре? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|