Java的设计模式之单例模式

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

如例:
自定义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成员变量将用于对象返回出去。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值