2015-08-11 5 views
-2

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

+1

Вы пытались найти какую-либо реализацию? Что вы столкнулись? – Sid

+3

Вы имеете в виду реальные приложения * life * или приложения реального времени *, которые являются очень специфическим классом приложений? – RealSkeptic

+0

Это может помочь: Sterls

ответ

2

Как описано в шаблоне, в любое время, когда вы хотите, чтобы существовал только один экземпляр , вы должны использовать шаблон Singleton.

Общим примером может быть объект Logger. В системе может быть много мест, где можно вызвать регистратор, чтобы что-то записать. Но вам может понадобиться только один такой экземпляр. Это может быть особенно актуально, если построение экземпляра - тяжелая операция.

Что-то вроде этого:

public class Logger { 
    private static final Logger INSTANCE = new Logger(); 

    private Logger() { 
     // do something to initialize the logger 
    } 

    public static Logger getInstance() { 
     return INSTANCE; 
    } 

    // implementation ... 
} 

Тогда любой код, который должен ссылаться на регистратор не нужно его экземпляр (не может, на самом деле), а вместо этого просто использует одноплодной:

Logger.getInstance().Log("some message"); 

Другие примеры в реальном мире могут включать контейнер для инъекций зависимостей, службу доступа к данным только для чтения (такую ​​как служба поиска, которая кэширует результаты) и т. Д. Вообще-то, где инициализация или повторные операции могут быть тяжелыми и которые являются потоками -безопасно.

+0

он уже знает сам образец, он хотел бы знать, где он наиболее часто используется. но хороший ответ. ;) – ChrisKo

+0

@ChrisKo: Понял, но я фигурирую за полноту, я также могу быть тщательной. – David

+0

Почему вы отметили это как ответ? я ответил перед ним, и я не представил пример кода, так как вы сказали, что знаете шаблон – ChrisKo

1

Синглтон всегда имеет смысл при работе с тяжелыми объектами, где нет смысла иметь более одного экземпляра по всему приложению. Поскольку вы имеете дело с веб-приложениями, вам нужно иметь дело с объектами, которые одинаковы для каждого пользователя/сеанса/запроса. Пул соединений с базами данных - это, вероятно, хороший пример или сервлет. Не имеет смысла создавать новый пул для каждого запроса. Один пул для всего приложения должен быть достаточным. Другими примерами являются, вероятно, Loggers, Email-Client, Global-Settings, эти вещи должны быть одинаковыми для каждого пользователя, иначе у вас не будет ресурсов. Или я понял что-то не так?