|
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
|
|||||||||||
Singletone для Class library29.10.2019, 16:42. Показов 4628. Ответов 98
Метки нет (Все метки)
приветствую всех,
Каждый раз в каждом class где я работаю с class library я создаю объект. Говорят это не есть хорошо. Например:
Вопрос, как сделать singleton из класса Frame? спасибо!
0
|
|||||||||||
| 29.10.2019, 16:42 | |
|
Ответы с готовыми решениями:
98
Intellisense и autocompletion в библиотеках класса (Class Library) Работа с DirectX: Output Type of Class Library Как узнать путь к ресурсу сборки Class Library? |
|
1846 / 1188 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
||||||
| 29.10.2019, 16:54 | ||||||
|
Bulky,
1
|
||||||
|
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
|
|
| 29.10.2019, 16:55 [ТС] | |
|
А как потом обращаться к этому singleton Frame из другого класса или других классов?
Можно пример?
0
|
|
|
1846 / 1188 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
||||||
| 29.10.2019, 17:05 | ||||||
|
Bulky,
1
|
||||||
|
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
|
|
| 29.10.2019, 17:14 [ТС] | |
|
Enifan,
Не эксперементировал, правда, что если наделаешь кучу таких вот экземпляров (если нет singleton) , программа уйдет в неадекват. Или что-то подобное?
0
|
|
|
1846 / 1188 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
|
| 29.10.2019, 17:32 | |
|
Bulky, Тут зависит от логики класса.
Если есть например класс Машина, то при создании объектов - вы просто "создаете" машины (ауди, бмв, камаз) Другое дело, использовать класс только в одном экземпляре, пару банальных примеров с ходу 1) Любая компьютерная игра. При синглтоне вы не сможете запустить ее дважды. Это может помочь избежать некоторые ошибки, а также "жульничать" играя в 2-3 окна. 2) Панель управления реальным самолетом, есть 2 пилота. Если создать 2 объекта такого класса, то один пилот может повернуть налево, другой направо, и это будет делаться одновременно. Сбой программы. Но если класс синглтон-одиночка, и он будет продуман хороший алгоритм для управления 2-ум пилотам одновременно, то сбоев не будет (например приоритет управления будет у пилота №1) Примеры может и не айс, но хоть что то.
1
|
|
|
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
|
|
| 29.10.2019, 17:32 [ТС] | |
|
ОК. спасибо!
0
|
|
|
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
|
||||||
| 30.10.2019, 08:39 [ТС] | ||||||
|
Enifan, Вроде все просто, но я что-то упускаю.
концы с концами не сходятся. Потому-что на class library Frame у меня reference и мне его не нужно создавать. Я не могу писать этот rод в классе Frame, т.к. он по сути есть library.
Вот в данном случае как с него singleton сделать?
0
|
||||||
|
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
|
|
| 30.10.2019, 10:20 | |
|
Bulky, не совсем понял, о чем вы. но он у вас и так синглтон. Чтобы его использовать в других сборках сделайте класс публичным.
0
|
|
|
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
|
|||||||
| 30.10.2019, 10:23 [ТС] | |||||||
Он как class library в проекте, добавлен через Add --> reference?
0
|
|||||||
|
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
|
||||||
| 30.10.2019, 10:45 | ||||||
|
Bulky, никак. Если вы не можете менять класс, то вы его не измените
![]() Можете сделать такое Кликните здесь для просмотра всего текста
, класс будет хранить экземпляр, который смогут использовать остальные. Но это не синглтон, объект фрейма можно будет создавать, соответственно можно сильно испортить себе жизнь, если какой-то класс создаст свой экземпляр фрейма и будет использовать его вместо нужного. Вообще тут больше напрашивается Dependecy Injection нежели синглтон.
0
|
||||||
|
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
|
|
| 30.10.2019, 10:54 [ТС] | |
|
Lexeq,
это уже какие-то дебри. Мы наверное немного о разных вещах. Может сначала? Есть class Frame, я пользуюсь его методами. Это класс из library. Мне сказали, что ты открываешь много объектов этого класса Frame в разных местах (классах) проекта. Сделай singleton, чтобы не плодить столько объектов.
0
|
|
|
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
|
|
| 30.10.2019, 10:57 | |
|
Bulky, есть доступ к исходникам library?
0
|
|
|
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
|
||
| 30.10.2019, 11:01 [ТС] | ||
|
Вы имеете ввиду подключить library (source) как project с референсированием, и затем лезть в library и делать там singleton.
0
|
||
|
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
|
|
| 30.10.2019, 11:07 | |
|
Bulky, если вы можете менять код library, то делайте синглтон. Если код library менять нельзя, то синглтон вы не сделаете. Единственное, что можно тогда сделать это где-то хранить экземпляр Frame и испоьзовать его.
0
|
|
|
1846 / 1188 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
|
| 30.10.2019, 13:18 | |
|
Bulky,
1) Можно с помощью рефлексии переделать недоступный класс, но эта тема не для новичков. 2) Либо создать один объект класса Frame, и через ссылки (которые находятся в разных местах кода) работать с ним.
0
|
|
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
| 30.10.2019, 14:25 | |
|
Ещё бы кто-нибудь обратил внимание, что сделав синглтон у машины и лодки будет одна и та же рама. И глухой телефон донес до форума не оригинальную формулировку задачи
1
|
|
|
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
|
|
| 30.10.2019, 14:30 [ТС] | |
|
0
|
|
|
Модератор
|
|
| 30.10.2019, 14:33 | |
|
Bulky, конкретно в этом описанном вами примере, как уже сказал КОП, синглтон Frame не к чему.
Он ника не вяжется с задачей. Возможно вы неверно упростили реальную задачу, поэтому вас никак не поймут.
0
|
|
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
| 30.10.2019, 14:34 | |
|
Bulky, это уберёт некорректный и ненужный контекст.
Решение кстати давно дано в 11 посте
0
|
|
| 30.10.2019, 14:34 | |
|
Помогаю со студенческими работами здесь
20
Как искусственно вызвать exception в Class Library (пока пустой) Вопрос из теста: A project with an Output Type of Class Library cannot be started directly Есть Class library (с работающим кодом) как найти то, что запускает этот код?
Нужно составить регулярное выражение для поиска <div class="market_row_name"> и <div class="market_row_price"> Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|