Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
105 / 7 / 1
Регистрация: 27.04.2015
Сообщений: 251

Возможно ли создать синглтон без static поля?

06.05.2025, 13:38. Показов 1342. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вдруг стало любопытно, в любом языке любая реализация синглтона (из тех что я видел) подразумевает сокрытие конструктора класса и доступ статичными методами к статичному полю
Эпичный пример синглотона
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Singleton
{
    private static Singleton instance;
 
    private Singleton()
    {}
 
    public static Singleton getInstance()
    {
        if (instance == null)
            instance = new Singleton();
        return instance;
    }
}
а вот стало интересно, можно ли создать синглтон как-то иначе, ну просто из спортивного интереса.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2025, 13:38
Ответы с готовыми решениями:

Отговорите использовать public static, и предложите красивую альтернативу
имеется три runnable, у каждого - public метод отправки ему сообщения. их в процессе всего три, от...

ООП static и функции для работы с ним
Новичок по ООП ,возникли вопросы . 1)Функции для работы с данными static и как осуществляется...

возможно ли создание программы сканирующей картинку на мониторе и генерации сигналов по результатам анализа сканирования?
сам не программист....

10
Эксперт .NET
 Аватар для Usaga
14125 / 9344 / 1350
Регистрация: 21.01.2016
Сообщений: 35,108
06.05.2025, 13:46
Anton1978, можно еще через Dependency Injection, внедрив в граф ссылку на единственный экземпляр объекта, ссылку на который можно отдельно даже не сохранять нигде.
1
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
06.05.2025, 16:14
Цитата Сообщение от Anton1978 Посмотреть сообщение
в любом языке любая реализация синглтона (из тех что я видел) подразумевает сокрытие конструктора класса
не в любом. не во всех языках есть классы.

Добавлено через 22 минуты
Цитата Сообщение от Anton1978 Посмотреть сообщение
подразумевает сокрытие конструктора класса и доступ статичными методами к статичному полю
Без приватных статических полей:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class Singleton
{
    private Singleton()
    { }
    
    static Singleton()
    {
        var instance = new Lazy<Singleton>(() => new Singleton());
        getInstance = () => instance.Value;
    }
 
    public static Func<Singleton> getInstance;
}
1
Эксперт .NET
 Аватар для Usaga
14125 / 9344 / 1350
Регистрация: 21.01.2016
Сообщений: 35,108
06.05.2025, 16:38
Shamil1, здесь нет инкапсуляции. Поле getInstance легко изменить другим делегатом)
2
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
06.05.2025, 17:02
Цитата Сообщение от Usaga Посмотреть сообщение
Поле getInstance легко изменить другим делегатом)
"readonly" добавить

C#
1
public static readonly Func<Singleton> getInstance;
0
Эксперт .NET
 Аватар для Usaga
14125 / 9344 / 1350
Регистрация: 21.01.2016
Сообщений: 35,108
06.05.2025, 17:31
Shamil1, уже лучше) Но остаётся открытым вопрос, а зачем тут делегат и насколько отложенная инициализация полезна для синглтона)
0
105 / 7 / 1
Регистрация: 27.04.2015
Сообщений: 251
06.05.2025, 18:30  [ТС]
все равно есть статика
0
1967 / 823 / 114
Регистрация: 01.10.2012
Сообщений: 4,829
Записей в блоге: 2
06.05.2025, 21:06
Цитата Сообщение от Anton1978 Посмотреть сообщение
а вот стало интересно, можно ли создать синглтон как-то иначе, ну просто из спортивного интереса.
Нездоровый, праздный интерес. Во всяком случае на плюсах объявлять статики необязательно (можно просто переменную(е)), хотя статик более уместен. Возможно Вы хотели спросить "можно ли чисто в куче, без всяких переменных". Тогда думаю что нет, как-то "заякоривать" данные неизбежно
0
105 / 7 / 1
Регистрация: 27.04.2015
Сообщений: 251
06.05.2025, 21:37  [ТС]
от чего же праздный? все может пригодиться.
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
06.05.2025, 21:48
Цитата Сообщение от Usaga Посмотреть сообщение
зачем тут делегат и насколько отложенная инициализация полезна для синглтона)
В оригинале (первый пост) была функция и отложенная инициализация.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
02.06.2025, 10:08
В весьма интересном языке Io (он хорошо описан в книге Брюса Тэйта "7 языков за 7 недель") создание синглтона делается особенно эффектно - одной строкой кода (переопределением слота clone):

Code
1
2
Loner := Object clone -- определяем некий объект
Loner clone := Loner  -- переопределяем слот, ответственный за клонирование
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2025, 10:08
Помогаю со студенческими работами здесь

Создать алгоритм поведения реального государства (возможно ли такое?)
В учебных целях пытаюсь создать алгоритм, который считает сколько денег осталось в стране. Это...

С каким ПО/языком возможно создание программы по смене обоев на раб.столе
Она должна считывать текущую погоду в городе с какого-л. сервиса и, в зависимости от погоды,...

Возможно ли в ближайшей перспективе расшифровка импульсов человеческого зрения и создание имплантов для зрения?
если уже в общем давно создан кохлеарный имплант для слуха ,не подходят ли технологии к тому...

Возможно ли создание ИИ, который анализирует сценарии сериалов, загружает и анализирует фотографии людей
Вопрос: Возможно ли создание ИИ, который анализирует сценарии сериалов, загружает и анализирует...

Получить все возможные комбинации
Дана строка, например: АРТО Необходимо получить все возможные комбинации из совпадений букв...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru