Singleton mode simple version

package com.uncle.singleton;

/**
 *设计模式  23种
 * 	1.设计模式不是知识点
 * 	2.设计模式是一种设计经验的总结
 * 	3.设计模式用来解决某些场景下的某一类问题的---->通用的解决方案
 * 	4.有了设计模式之后  可以让代码更容易被理解  确保了复用性  可靠性  可扩展性
 *
 * 	设计模式分为三类
 * 	1.创建型模式(5种)----->用于解决对象创建的过程
 * 		单例模式  工厂方法模式   抽象工厂模式   建造者模式   原型模式
 * 	2.结构型模式(7种)----->把类或对象通过某种形式结合在一起  构成某种复杂或合理的结构
 * 		适配器模式  装饰者模式   代理模式  外观模式   桥接模式   组合模式   享元模式
 * 	3.行为型模式(11种)---->用来解决类或对象之间的交互  更合理的优化类或对象之间的关系
 * 		观察者模式  策略模式  模板模式  责任链模式  解析器模式  迭代子模式
 * 		命令模式  状态模式  备忘录模式  访问者模式  中介者模式
 *
 *
 *
 * 	单例模式
 *
 * 	单例模式的实现
 * 		1.私有的构造方法
 * 		2.私有的静态的当前类对象作为属性
 * 		3.公有的静态的方法返回当前类对象
 *
 * 		指的是对象的加载
 * 		饿汉式(立即加载)   对象启动时就加载啦
 * 			不会产生对象没有就拿来使用的问题  空指针异常
 * 			启动项目加载的对象过多  有些还没有使用  产生服务器承载压力的问题
 * 		懒汉式(延迟加载)   对象什么时候用到了 才会加载
 * 			可能会由于没有操作好  导致异常(很严谨)
 * 			启动项目时候只有需要的加载  不需要的还没有创建  不会浪费空间
 * 		*生命周期托管(单例对象别人帮我们处理)   对象加载过程交给别人
 */
public class SingleTon {
    
    
    //通过我的设计 让这个类只能创建一个对象

    //每一个类都有默认无参数的构造方法----公有  在外面可以随意创建
    //1.让构造方法变成私有---保证外面不可以随便创建对象
    private SingleTon(){
    
    }
    //2.单例 不是无例 --- 在本类中的某个成员位置上创建唯一的一个对象
    //在以下的四个位置 写一行new SingleTon
    //属性
    //方法------不行  每一次执行都会产生一个过程  保证不了唯一
    //构造方法--不行  私有  本身就是这个构建过程
    //块--------不行  没有返回值  创建了对象也无法给别人使用
    //2.在当前类中存在一个私有的静态属性  是当前类类型的
    private static SingleTon single;//直接 = new Singleton(); 立即加载  饿汉式
    //3.提供一个获取单个对象的方法给用户
    //   返回值  将对象返回出去
    public static SingleTon getSingleTon(){
    
    // get类名  newInstance
        if(single == null) {
    
    
            single = new SingleTon();//延迟加载的方式  懒汉式
        }
        return single;//引用类型
    }

}

package com.uncle.singleton;

public class TestMain {
    
    
    public static void main(String[] args){
    
    
        SingleTon s1 = SingleTon.getSingleTon();
        SingleTon s2 = SingleTon.getSingleTon();
        System.out.println(s1==s2);//true 比较地址
        System.out.println(s1.equals(s2));//true Object类继承过来的 默认也比地址
        System.out.println(s1);//类全名@hashCode--->16进制的整数
        System.out.println(s2);
    }
}

  • Singleton mode diagram
    Insert picture description here
  • Stack memory overflow problem
    Insert picture description here

Guess you like

Origin blog.csdn.net/m0_51945027/article/details/112785688