设计模式之单例模式
来源:互联网 发布:中国的顶级域名 编辑:程序博客网 时间:2024/05/29 18:04
设计模式
(是一套被反复使用,多人熟知的,经过分类编目的,代码设计经验的总结)
目的:
使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码的可靠性。
什么是单例模式:(一个国家只能有一个皇帝,如果有多个就会导致很多问题。。。)
有些对象我们只需要一个就足够了,比如:
配置文件,工具类,线程池,缓存,日志对象等等。。。如果创造出多个实例,那么多个实例去读取同一个配置文件等,就会导致很多问题,比如占用资源过多,结果不一致等等。
那么我们就该思考怎么保证整个应用中某个实例有且只有一个?—>单例模式
常用的两种单例模式:饿汉模式,懒汉模式。
package com.danli;/* * 单例模式:Singleton * 应用场合:有些对象我们只需要一个就足够了,比如古代皇帝,我们现在的老婆。。。 * 作用:保证整个应用中某个实例有且只有一个 * 类型:饿汉模式,懒汉模式 */public class Singleton { //修改默认的构造方法,改为私有的private,不允许外部直接创建对象 private Singleton(){ } //创建类的唯一实例,使用private(私有的),static(静态的)修饰 private static Singleton instance = new Singleton(); //提供一个用于获取实例的方法 public static Singleton getInstance(){ return instance; }}
package com.danli;/* * 单例模式:Singleton2 * 应用场合:有些对象我们只需要一个就足够了,比如古代皇帝,我们现在的老婆。。。 * 作用:保证整个应用中某个实例有且只有一个 * 类型:饿汉模式,懒汉模式 */public class Singleton2 { //1,将构造方法私有化,不允许外部直接访问 private Singleton2(){ } //2,声明类的唯一实例,使用private static修饰,并没有去实例化(也就是没有new) private static Singleton2 instance; //3,提供一个用于获取实例的方法,使用public static修饰 public static Singleton2 getInstance(){ if(instance==null){ instance = new Singleton2(); } return instance; }}
package com.danli;public class Test { public static void main(String[] args) { //饿汉模式 Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); if(s1 == s2){ System.out.println("s1和s2是同一个实例"); }else { System.out.println("s1和s2不是是同一个实例"); } //懒汉模式 Singleton2 s3 = Singleton2.getInstance(); Singleton2 s4 = Singleton2.getInstance(); if(s3 == s4){ System.out.println("s3和s4是同一个实例"); }else { System.out.println("s3和s4不是是同一个实例"); } }}
区别:
懒汉模式–>懒汉模式类加载时快,运行获取对象慢(线程不安全)
饿汉模式–>饿汉模式类加载时慢,运行获取对象快(线程安全)
0 0
- 设计模式之 单例设计模式
- 设计模式之 单例设计模式
- 设计模式之单例设计模式
- 设计模式之-----------单例设计模式
- 设计模式之:单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之-单例设计模式
- 设计模式之单例设计模式 标签: 设计模式
- 设计模式之单例
- 设计模式之单例
- 设计模式之 单例
- 进程命令
- Node.js模块机制
- Android之路——重启说明
- 微信小程序横向左右滑动案例
- 熄灯之后的学习——再读《MySQL必知必会》(5)|| 过滤数据
- 设计模式之单例模式
- 地震干涉法(Seismic Interferometry)
- [HNOI2017]某蒟蒻的酱油记~
- C# 视频格式转换类
- Caffe--windows下的初使用及简单测试
- 130.短信的备份
- vim 及 快捷键
- 【HTML】对与HTML语言详细概述及其使用说明
- 二元位运算