static应用知识:单例设计模式
创始人
2024-02-29 19:20:07
0

1、什么是设计模式(Design pattern)

开发中经常遇到一些问题,一个问题通常有n种解法的,但其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。
设计模式有20多种,对应20多种软件开发中会遇到的问题。
学设计模式主要学2点:
第一:这种模式用来解决什么问题;
第二:遇到这种问题了,该模式是怎么写的,他是如何解决这个问题的。

2、单例模式是什么?

  • 可以保证系统中,应用该模式的这个类永远只有一个实例,即一个类永远只能创建一个对象。
  • 使用场景:例如电脑的任务管理器对象,我们只需要一个就可以解决问题了,这样可以节省内存空间。

3、单例的实现方式

饿汉单例模式;
懒汉单例模式;

(1) 饿汉单例设计模式
在使用类获取对象的时候,对象已经提前为你创建好了。

设计步骤:

第一,定义一个单例类;
第二,单例必须将构造器私有化,将构造器藏起来,防止对外产生对象;
第三,定义一个静态变量存储一个对象即可:属于类,与类一起加载一次。
 

//1.定义一个单例类
public class SingleInstance {
//    2.单例必须将构造器进行私有化,防止对外产生对象private SingleInstance() {}
//    3.饿汉单例是在获取对象前,已经提前准备好一个对象;这个对象只能是一个,所有定义静态变量存储public static SingleInstance instance = new SingleInstance();
}
/**单例测试类目标:理解饿汉单例的设计步骤*/
public class SingleInstanceTest {public static void main(String[] args) {SingleInstance s1 = SingleInstance.instance;    //获取对象SingleInstance s2 = SingleInstance.instance;System.out.println(s1 == s2);}
}

控制台输出结果:

 饿汉单例重点总结

1、饿汉单例的实现步骤?

  • 定义一个类,把构造器私有化(防止对外产生对象)
  • 定义一个变量存储一个对象(调用类时,对象已经准备好了,与类一起加载一次)

(2) 懒汉单例设计模式

  • 在真正需要该对象的时候,才去创建一个对象(延迟加载对象)。

  • 设计步骤:

    • 第一,定义一个类,把构造器私有化:防止对外产生对象;
    • 第二,定义一个静态变量存储一个对象即可:属于类,与类一起加载一次;
    • 第三,必须提供一个方法返回一个单例对象-
//1.定义一个懒汉单例类
public class SingleInstance02 {
//    2.必须将构造器私有化:防止对外产生对象private SingleInstance02(){}
//    3.定义静态变量存储一个对象;与类一起加载,只加载一次。最好做到私有化,这样可以避免给别人挖坑,公开化别人只会拿到一个null。private static SingleInstance02 instance02;
//    4.提供一个方法,获取一个单例对象 再return返回单例对象public static SingleInstance02 getInstance02(){if (instance02 == null){instance02 = new SingleInstance02();}return instance02;}
}
public class SingleInstanceTest02 {public static void main(String[] args) {
//        获取对象SingleInstance02 s1 = SingleInstance02.getInstance02();SingleInstance02 s2 = SingleInstance02.getInstance02();System.out.println(s1 == s2);}
}

控制台输出结果:

 

懒汉单例重点总结

1、懒汉单例的实现步骤?

  • 定义一个单例类,把构造器私有化(防止对外产生对象)
  • 定义一个私有化的静态变量,用于存储一个对象,不设初始值
  • 提供一个返回单例对象的方法

相关内容

热门资讯

董明珠硬刚空调“铝代铜”!海尔... 买空调时,你会特意问一句“是铜管还是铝管”吗?近日,海尔、美的、小米等主流家电品牌宣布,将联合推动空...
兄弟科技:诉讼仍处审理阶段无实... 证券之星消息,兄弟科技(002562)12月22日在投资者关系平台上答复投资者关心的问题。 投资者提...
免费停车延至30分钟!《烟台市... 大众网记者 崔荔媛 烟台报道 12月22日,烟台市人民政府新闻办公室召开新闻发布会,宣布《烟台市停车...
国网吉林经研院完成能源电力主要... 12月15日,国网吉林经研院顺利完成能源电力领域主要政策的系统性梳理与汇编工作。该项工作旨在全面整合...
赖清德弹劾案最新进展:台立法机... 中国台湾网12月22日讯 据台媒报道,因民进党当局“不副署、不执行”台立法机构三读修正通过的“财划法...
再现“拉车门”盗窃案,库伦警方... 12月18日 库伦旗公安局 成功破获一起“拉车门”盗窃案 抓获2名犯罪嫌疑人 12月17日 库伦镇...
诉前调解化干戈跨省纠纷当庭了 近日,紫云苗族布依族自治县人民法院板当人民法庭高效化解一起跨省恋爱期间财物返还纠纷,从组织调解到履行...
一中国女子在欧洲邮轮旅行失联超... 12月21日,据媒体报道:一名中国女性乘客在爱达月光号(AIDAluna)邮轮上失踪,引发多国关注。...
原创 高... 当今复杂的国际政治舞台上,日本军国主义复苏的论调日益凸显,引发国际社会广泛警惕。高市早苗就任日本首相...