单例设计模式

来源:互联网 发布:crossgear 知乎 编辑:程序博客网 时间:2024/06/12 01:09

单例设计模式

目的:保证类在内存中只有一个对象。

  • 一般步骤:
    • 1、控制类的创建,不让其他类创建本类的对象。private
    • 2、在本类中定义一个本类的对象。Singleton s;
    • 3、提供公共的访问方式。public static Singleton getInstance(){return s;};

单例模式的两种写法:
饿汉模式:一上来就已经建好该类的对象。
懒汉模式:在获取的函数中,如果为空的时候才创建对象。

区别:
* 1、饿汉模式是空间换时间,而懒汉模式是时间换空间。
* 2、在多线程访问时,饿汉模式不会创建多个对象,而懒汉模式有可能创建多个对象。

具体代码如下:
饿汉模式:

/**饿汉模式,开发常用的方式。*/public Singleton{    //1、私有构造函数    private Singleton(){};    //2、创建私有且静态本类对象    private static Singleton s=new Singleton();    //3、对外提供方法获取本类的对象    public static Singleton getInstance(){            return s;    }}

懒汉模式:

/**    懒汉模式,面试时常考的,一般问单例模式的延时加载.会出现线程不安全的。*/public class Singleton{    //1、私有化构造函数    private Singleton(){} ;    //2、声明私有静态的类变量    private static Singleton s;    //3、给外部提供获取本类对象的静态方法    public static Singleton getIntance(){        if(s==null)//此处会多线程的不安全行为。    //如果线程1在此处就被线程2获取了cup就会创建2个s,就不是单例了。            s=new Singleton();        return s;}   }
0 0
原创粉丝点击