栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

晨讲代码演示

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

晨讲代码演示

饿汉式

package cn.tedu.design;

public class Singleton1 {
    public static void main(String[] args) {
        //4.创建main()进行测试
//        new MySingle();//不能直接创建本类对象
        MySingle single1 = MySingle.getSingle();
        MySingle single2 = MySingle.getSingle();
        //6.测试获取到的对象是否相等
        System.out.println(single1 == single2);//true
        System.out.println(single1);//cn.tedu.design.MySingle@677327b6
        System.out.println(single2);//cn.tedu.design.MySingle@677327b6
    }
}
//0.创建自己的单例程序
class MySingle{
    //1.提供构造方法,并且将构造方法私有化
    
    private MySingle(){

    }
    //2.创建本类对象,并把本类对象也私有化
    //5.2创建出来的对象也需要改成静态的,因为getSingle()是静态的,静态只能调用静态
    private static MySingle single = new MySingle();

    //3.需要给外界提供一个公共的全局访问点
    //5.1需要将本方法设置成静态,这样就可以通过类名直接调用,不用通过对象来调用
    public static MySingle getSingle(){
        //4.将本类刚刚创建的对象通过return关键字返回调用位置
        //如果一个方法设置了返回值类型,那么这个方法必须有相同类型的返回值
        return single;
    }
}

懒汉式

package cn.tedu.design;


public class Singleton2 {
    //5.在main()中尝试获取本类对象

    public static void main(String[] args) {
        MySingle2 single1 = MySingle2.getSingle2();
        MySingle2 single2 = MySingle2.getSingle2();
        //6.测试两个引用类型变量保存的对象的地址值是否一致
        System.out.println(single1 == single2);//true
        System.out.println(single1);//cn.tedu.design.MySingle2@677327b6
        System.out.println(single2);//cn.tedu.design.MySingle2@677327b6
    }
}

//0.创建一个自己的单例程序
class MySingle2{
    //1.私有化本类的构造方法,为了防止外界直接调用本类的构造方法创建对象
    private MySingle2(){

    }
    //2.再类的内部创建好引用类型变量(延迟加载的思想)--注意私有化
    //4.2本成员方法也需要设置成静态,因为静态只能调用静态
    private static MySingle2 single2;

    //3.创建一个公共的方法供外界调用,用来获取本类唯一的对象
    //4.1如果想绕过对象通过本类类名直接调用本方法,需要将方法设置成静态,因为静态可以被类名直接调用
    public static MySingle2 getSingle2(){
        //3.1在返回对象之前,需要先判断single2是否保存有地址值
        if (single2 == null){//如果是默认值null,说明之前从来没有创建过本类对象
            //3.2没有创建,就创建一个,并赋值给single2
            single2 = new MySingle2();
        }
        //3.3如果跳过了if的{},说明single2不为空,有地址值,之前创建过对象
        //那么就不再新建对象,而是把之前的对象返回,即可
        return single2;
    }

}
class MySingle3{
    private MySingle3(){
    }
    private static MySingle3 single3;

    public static MySingle3 getSingle3(){
        if (single3 == null){
            single3 = new MySingle3();
        }
        return single3;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281032.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号