单例模式

mac2024-10-15  24

一.单例模式的定义:

单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

二.单例模式的特点

1、单例类只能有一个实例。   2、单例类必须自己创建自己的唯一实例。  3、单例类必须给所有其他对象提供这一实例。

三.单例模式的优缺点:

优点1.在内存中只有一个对象,节省空间 2.避免频繁的创建销毁对象,提高性能 3.避免对共享资源的多重占用

缺点: 1.扩展比较困难 2.实例化的对象长期不利用,系统默认认为垃圾回收,造成对象状态丢失

四.单例模式使用场景

1.创建对象时占用资源多,但同时需要用到该类对象 2.对系统内资源要求统一读写,如读写配置信息 3.当多个实例存在可能引起逻辑错误,如号码生产器

单例模式分为两种:

饿汉式:

package happy.animal; public class SingleOne { //创建一个私有构造类 private SingleOne() {}; //创建该类的私有静态实例 private static SingleOne intance=new SingleOne(); //创建公有静态方法 public static SingleOne getIntance() { return intance; } } package happy.animal; public class test { public static void main(String[] args) { // 不可以用SingleOne one=new SingleOne();//会报错 SingleOne one=SingleOne.getIntance(); SingleOne two=SingleOne.getIntance(); System.out.println(one==two); } }

懒汉式:

package maintest; public class SingleTow { //1.创建私有构造函数 private SingleTow() {}; //2.创建该类的私有静态实例化 private static SingleTow instance=null; //3.创建公有静态方法 public static SingleTow getinstance() { if(instance==null) { instance=new SingleTow(); } return instance; } }

饿汉式与懒汉式的优缺点:

饿汉式:以空间换时间,线程安全 懒汉式:以时间换空间,线程存在风险

最新回复(0)