Примеры одноэлементных классов в API Java - PullRequest
8 голосов
/ 17 июня 2010

Каковы лучшие примеры шаблона проектирования Singleton в API Java? Является ли класс Runtime синглтоном?

Ответы [ 3 ]

11 голосов
/ 17 июня 2010

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

См. Также :


Обновление : чтобы ответить на комментарий 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() {}

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

0 голосов
/ 17 июня 2010

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

0 голосов
/ 17 июня 2010

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

Статья на вики-сайте Singleton

Java Dev on Singletons

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...