zoukankan      html  css  js  c++  java
  • Java单例模式

    0.定义

    单例模式(Singleton Pattern), 其定义如下:
    Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类
    只有一个实例, 而且自行实例化并向整个系统提供这个实例。 )

     

    1.单例模式类Singleton

    package com.xkzhangsan.singleton;
    
    public class Singleton {
        private static final Singleton singleton = new Singleton();
    
        // 限制产生多个对象
        private Singleton() {
        }
        
        // 通过该方法获得实例对象
        public static Singleton getSingleton() {
            return singleton;
        }
        
        // 类中其他方法,尽量是static
        public static void doSomething() {
            System.out.println("Singleton.doSomething...");
        }
    }

    2.测试类

    package com.xkzhangsan.singleton;
    
    public class Client {
        
        public static void main(String[] args) {
            
            for (int i = 0; i < 3; i++) {
                Singleton singleton = Singleton.getSingleton();
                singleton.doSomething();
            }
        }
    
    }

     3.使用注意

    (1)优点

    a.由于单例模式在内存中只有一个实例, 减少了内存开支 ,减少了系统的性能开销 

    b.单例模式可以在系统设置全局的访问点, 优化和共享资源访问 

    (2)缺点

    a.单例模式一般没有接口, 扩展很困难, 若要扩展, 除了修改代码基本上没有第二种途径可以实现

    (3)使用场景:在一个系统中, 要求一个类有且仅有一个对象, 如果出现多个对象就会出现不良反
    , 可以采用单例模式 ,如下:

    a.要求生成唯一序列号的环境
    b.在整个项目中需要一个共享访问点或共享数据
    c.创建一个对象需要消耗的资源过多
    d.需要定义大量的静态常量和静态方法(如工具类) 的环境, 可以采用单例模式


    参考:设计模式之禅

    GitHub地址:https://github.com/xkzhangsan/java-designpattern-practice

    寻找撬动地球的支点(解决问题的方案),杠杆(Java等编程语言)已经有了。xkzhangsan
  • 相关阅读:
    mouseover 有一个多次触发的问题
    2019牛客多校第一场 H.XOR
    luoguP4570 [BJWC2011]元素(线性基)
    线性基
    2019牛客多校第七场 E.Find the median
    2019牛客多校第七场
    2019牛客多校第五场
    支配树
    2019牛客多校第四场
    Codeforces 1195E OpenStreetMap(单调队列)
  • 原文地址:https://www.cnblogs.com/xkzhangsanx/p/10801786.html
Copyright © 2011-2022 走看看