单例模式

作者: 是归人不是过客 | 来源:发表于2020-08-27 11:38 被阅读0次

    模式(单例模式初步)

    什么是设计模式:设计模式就是可以重复利用的解决方案

    引入

    栗子:

    public class Singleton {
    
    }
    
    
    public class pTest01 {
        public static void main(String[] args) {
            System.out.println(new Singleton() == new Singleton()); // false 不是单例
                    Singleton p1 = new Singleton();
                    Singleton p2 = new Singleton();
                    System.out.println(p1 == p2); // false 不是单例
        }
    }
    

    注意

    ==两边如果是基本数据类型,可以比较这两个基本数据类型是否相等
    ==两边如果是引用数据类型,则比较的是内存地址

    此时我们发现,他们的内存地址是不相同的,所以都不是单例模式。

    要领:怎样实现单例模式尼?

    1、构造方法私有化
    2、对外提供一个公开的静态的获取当前类型对象的方法
    3、 提供一个当前类型的静态变量

    单例模式分为两种:
    饿汉式单例:在类加载阶段就创建对象
    懒汉式单例:用到对象的时候才会创建

    懒汉式栗子:

    public class Singleton {
        private static Singleton s; // 有默认赋值哦(null),类加载时加载,并只加载一次哦!
    
        private Singleton() {} // 构造方法私有化
        
    //  对外提供一个公开获取 Singleton对象的方法
        public static Singleton getInstance() { // 如果不加static就是成员方法,成员方法必须有对象才可以调用,如果创建对象就不会时单例化了!!!!
            if(s == null) {
                s = new Singleton();
            }
            return s;
        }
    }
    
    public class pTest01 {
        public static void main(String[] args) {
            Singleton s1 = Singleton.getInstance();
            Singleton s2 = Singleton.getInstance();
            System.out.println(s1 == s2);
        }
    }
    

    饿汉式栗子:

    public class Customer {
    //  类加载时只执行一次   
        private static Customer c = new Customer();
        
        //构造方法私有化
        private Customer() {}
        
        public static Customer getInstance() {
            return c;
        }
    }
    

    要多看几遍呦

    加油

    相关文章

      网友评论

        本文标题:单例模式

        本文链接:https://www.haomeiwen.com/subject/bhlcsktx.html