1. Введение в режим
Определение шаблона
Убедитесь, что в определенном классе есть только один экземпляр, и создает его сам и предоставляет этот экземпляр всей системе.
Сценарий использования режима
Убедитесь, что класс имеет только один объект, например, для создания объекта, требуется слишком много ресурсов, таких как доступ к ресурсам, таким как IO и базы данных.
2. Диаграмма класса UML
Введение персонажа:
(1) Клиент: клиент высокого уровня.
(2) Синглтон: Синглтон.
3. Простая реализация шаблона
открытый класс Singleton {Private Static Singleton Intance; private singleton () {} public static singleton getInstance () { / * * В начале, когда появляются несколько потоков, они сталкиваются с блокировками, и входит один поток, который пуст, новый объект; Последующие потоки вводят, не пустые, без работы; Наконец -то возвращайте непосредственно * объект не пуст, и несколько потоков Введите функцию, не пустую, не выполняется операция блокировки, и непосредственно возвращает */ if (intance == null) {synchronized (singleton.class) {if (intance == null) {intance = new Singleton (); }} return intance; }} класс Singleton1 {// Lazy Private Static Singleton1 intance = new singleton1 (); // ленивый, он загружает private singleton1 () {} public static singleton1 getInstance () {return Intance; }} класс Singleton2 {// голодный частный статический Singleton2 Intance; private singleton2 () {} public static singleton2 getInstance () {// загружает if (intance == null) {intance = new singleton2 (); } return Intance; }} class singleton3 {// private static singleton3 intance; private singleton3 () {} public synchronized static singleton3 getInstance () {// Нагрузка При использовании, блокировка многопоточных вызовов имеет действие блокировки, если (intance == null) {intance = new singleton3 (); } return Intance; }} класс singleton4 {// private static singleton4 intance; private singleton4 () {} public static singleton4 getInstance () {// collapse synchronized (singleton4.class) {// эффективность блокировки аналогична 3 if (intance == null) {intance = new singleton4 (); }} return intance; }}4. Плюсы и недостатки
(1) Преимущества:
О. Поскольку в Синглтонном режиме есть только один экземпляр в памяти, расходы на память уменьшаются, особенно когда объект должен быть часто создавать и уничтожать, а производительность не может быть оптимизирована во время создания или разрушения, преимущества синглтонского режима очень очевидны.
B. Поскольку шаблон Singleton генерирует только один экземпляр, накладные расходы на производительность системы уменьшаются. Когда генерация объекта требует большого количества ресурсов, таких как чтение конфигурации и генерация других зависимых объектов, его можно решить путем непосредственного генерации объекта Singleton, когда приложение запускается, а затем постоянно находится в памяти;
C. Режим Singleton может избежать нескольких профессий ресурсов, таких как действие файла записи, поскольку только один экземпляр находится в памяти, избегайте одновременных операций записи в одном и том же файле ресурса.
D. Режим Singleton может установить глобальные точки доступа в системе, оптимизировать и обмениваться доступом к ресурсам. Например, класс Singleton может быть разработан, чтобы отвечать на картирование и обработку всех таблиц данных.
(2) Недостатки
A. Синглтонский режим обычно не имеет интерфейса, и его трудно расширить. Если вы хотите расширить, в основном нет второго способа его реализации, кроме изменения кода.