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

    单例模式介绍:http://www.runoob.com/design-pattern/singleton-pattern.html

    单例模式就是保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    通常我们可以定义全局变量访问同一个对象,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。

    public class Singleton {
        private static Singleton instance;
        private Singleton(){}
        
        public static Singleton getInstance(){
            if(instance==null){
                instance = new Singleton();
            }
            return instance;
        }
    }

    测试代码。

    public class Test {
        public static void main(String[] args) {
            Singleton s1 = Singleton.getInstance();
            Singleton s2 = Singleton.getInstance();
            if(s1==s2){
                System.out.println("两个对象是相同的实例!");
            }
        }
    }

    输出结果:两个对象是相同的实例!

    单例模式因为Singleton类封装它的唯一实例,这样他可以严格地控制客户怎样访问它以及何时访问它。简单地说就是对唯一实例的受控访问。

    单例类和java封装的工具类有什么区别?

    相同点:java封装的工具类也会采用私有化的构造方法来避免其有实例。

    不同点:

    1、java封装的工具类不保存状态,仅提供一些静态方法或者静态属性供其他类调用。而单例类是有状态的。

    2、java封装的工具类不能用于继承多态,而单例类虽然实例唯一,却可以有子类来继承。

    3、java封装的工具类只不过是一些方法属性的集合,而单例类却有着唯一的对象实例。

    多线程时的单例

    多线程的程序中,同时访问Singleton类,调用GetSingleton()方法,可能创建多个实例。此时可以给线程加锁来处理。

  • 相关阅读:
    【复习笔记】数据结构-外排序
    【复习笔记】数据结构-内排序
    python os
    pyinstaller problem
    python tk Lable
    机器学习
    python pickle and json
    pycharm 快捷键
    day10_procession作业
    python fibonacci recursion review
  • 原文地址:https://www.cnblogs.com/jwen1994/p/9985360.html
Copyright © 2011-2022 走看看