【设计模式】01.单例模式

来源:互联网 发布:rdlc 分组小计源码 编辑:程序博客网 时间:2024/06/07 12:30
1.单例模式(Singleton)单例模式(Singleton):表示一个类只会生成唯一的一个对象。
public class SingletonTest {    public static void main(String[] args){        Singleton singleton = Singleton.getInstance();        Singleton singleton2 = Singleton.getInstance();         System.out.println(singleton == singleton2);    }}
 懒汉模式
class Singleton{    private static Singleton singleton;    //静态方法可以调用    private Singleton(){    //构造方法私有, 类外部不可以调用创建对象    }     public static Singleton getInstance(){   //(static)不使用对象,使用类名就可以调用            if(singleton == null){        //多线程时会有错,要注意,                        synchronized(Singleton.class){ if(singleton == null){ singleton = new Singleton();                }                                           }                            }        return singleton;    }}

饿汉模式
class Singleton{    private static Singleton singleton = new Singleton();    //静态方法可以调用,类加载时即创建实例    private Singleton(){    //构造方法私有, 类外部不可以调用创建对象    }     public static Singleton getInstance(){   //(static)不使用对象,使用类名就可以调用        return singleton;    }}



对于单例模式(Singleton)来说,如果在getInstance()方法中生成Singleton实例则可能会产生同步问题,即可能会生成两个不同的对象。