Java的设计模式之单例模式

来源:互联网 发布:淘宝pc端搭配套餐 编辑:程序博客网 时间:2024/06/08 10:27

在某些特殊场合中一个类对外提供了一个对象且只能是一个对象,这样的类叫做单例类,编写单例类的设计思想叫做单例设计模式。

如例:
自定义Singleton类,实现该类的封装;
自定义TestSingleton类,在main方法中能得到且只能得到Singleton类中的一个对象;

public class Singleton{    //2.提供本类的引用作为本类的成员变量    private    //static 表示提升为类的层次    private static Singleton sin = new Singleton(); //饿汉式    //private static Singleton sin = null; //懒汉式    //1.自定义无参的构造方法,使用private关键字修饰    //static关键字不能修饰构造方法,加上static隶属于类层级,就不能访问非静态的成员了    private /*static*/ Singleton(){            }    //3.提供公有的get成员变量方法将成员变量返回出去    public static Singleton getInstance(){        return sin;        //if(sin == null){ //懒汉式 返回时才创建        //     sin = new Singleton();        //}        //return sin;    }}

public class TestSingleton{    public static void main(String[] args){         //Singleton s1 = new Singleton();         //Singleton s2 = new Singleton();         //System.out.println(s1 == s2); //false  得到Singleton类中的两个对象         //因为每次new等于重新开辟内存空间         Singleton s1 = Singleton.getInstance();          Singleton s2 = Singleton.getInstance();         System.out.println(s1 == s2); //true 等于每次调用的都是Singleton下的成员方法getInstance,返回的是同一个对象,开辟的是同一块内存空间    }}

单例设计模式编写流程:
第一步:编写一个私有化的无参构造方法,使用private关键件修饰
第二步:提供本类类型的对象作为本类的成员变量,并使用private static共同修饰;
第三步:提供共有的静态(static)get成员变量将用于对象返回出去。

单例模式主要分饿汉式和懒汉式;
饿汉式表示一开始就是创建一个对象,懒汉式是直到返回时才创建对象。

原创粉丝点击