单例模式(Singleton)
设计-->一个类只能创建一个对象 有效减少内存占用空间
设计一个系统--->百度 搜索引擎
public class Baidu{
public void 搜索(String keyword){
}
}
创建一个Baidu对象 new
调用搜索的方法 做事情 方法执行一遍
同一时间有很多很多很多很多人在使用这个系统
对象--->只创建一个 堆内存中就只开辟一个空间
调用一次方法--->临时执行一次 方法执行空间就回收啦
单例模式的实现
1.私有的构造方法
2.私有的静态的当前类对象作为属性
3.公有的静态的方法返回当前类对象
指的是对象的加载
饿汉式(立即加载) 对象启动时就加载啦
不会产生对象没有就拿来使用的问题 空指针异常
启动项目加载的对象过多 有些还没有使用 产生服务器承载压力的问题
懒汉式(延迟加载) 对象什么时候用到了 才会加载
可能会由于没有操作好 导致异常(很严谨)
启动项目时候只有需要的加载 不需要的还没有创建 不会浪费空间
*生命周期托管(单例对象别人帮我们处理) 对象加载过程交给别人
package singleton; 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 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,场景,对象,---,static,单例,public,加载 From: https://www.cnblogs.com/yonlanmoji/p/17473556.html