Примеры singleton-классов в API Java

Каковы лучшие примеры шаблона разработки Singleton в API Java? Runtime классифицировать одиночный элемент?

9
задан Stephen C 12 December 2018 в 01:30
поделиться

3 ответа

Только два приходят на ум примеры:

См. также :


Обновление : чтобы ответить на комментарий PeterMmm (в настоящее время удален?) (В котором спрашивалось, откуда я узнал, что это синглтон), проверьте javadoc и исходный код:

public class Runtime {
    private static Runtime currentRuntime = new Runtime();

    /**
     * Returns the runtime object associated with the current Java application.
     * Most of the methods of class <code>Runtime</code> are instance 
     * methods and must be invoked with respect to the current runtime object. 
     * 
     * @return  the <code>Runtime</code> object associated with the current
     *          Java application.
     */
    public static Runtime getRuntime() { 
        return currentRuntime;
    }

    /** Don't let anyone else instantiate this class */
    private Runtime() {}

Он каждый раз возвращает один и тот же экземпляр и имеет частный конструктор.

12
ответ дан 3 November 2019 в 00:58
поделиться

Обратите внимание, синглтоны следует использовать с осторожностью и размышлениями. Обдумайте аргументы против синглтонов и вашу ситуацию, прежде чем реализовывать один. Чрезмерное использование синглтонов - это анти-шаблон, аналогичный глобальным переменным.

Статья вики-синглтона

Java Dev on Singletons

Почему синглтоны - это зло

Я использовал их в прошлом и вижу в них некоторую пользу. Я также был очень раздражен, когда пытался проводить с ними разработку через тестирование в той области, где они злы. Кроме того, наследование от них приводит к некоторому трудному для понимания поведению - по крайней мере, в Python - я точно не знаю в Java. Обычно из-за этого просто этого не делают. Поначалу это кажется отличной идеей, а потом вы сталкиваетесь с ловушками и хорошо понимаете, что, может быть, это все-таки не так хорошо.

0
ответ дан 3 November 2019 в 00:58
поделиться

Это для Swing : SingleFrameApplication. Посмотрите эту презентацию, в ней замечательно описано, как это работает.

-1
ответ дан 3 November 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: