对于java程序语言的单例设计模式讲解
1、设计模式:解决某一类问题最行之有效的方法。(java中有23种通用设计模式)
单例设计模式:解决一个类在内存中只存在一个对象。
2、单例设计模式有两种方式:
1)饿汉式
先初始化对象。当类一进内存就创建好对象
2)懒汉式
对象是方法被调用时才初始化,也叫延时加载,类进内存时,对象还没有存在,只有通过方法调用时,才建立对象
3、单例设计模式,是想要保证对象的唯一:
1)为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象。
2)还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象
3)为了方便其他程序对自定义对象的访问,可以对外其他一些访问方式
利用这三步进行代码实现:
1)将构造函数私有化
2)在类中创建一个本类对象
3)提供一个方法可以获取到该对象
提示:在单例设计模式中,事物该怎么描述还怎么描述,当需要将该事物的对象保证在内存中唯一时,加上以上三步即可。
代码说明:
//1)饿汉式
[java]
class Single
{
private int num;
public void setNum(int num)
{
this.num = num;
}
public int getNum()
{
return num;
}
//将构造函数私有化
private Single(){}
//在类中创建一个本类对象,因为构造函数被私有化,该类不能创建对象,想在外部访问,所以将其静态
private static Single s = new Single();
//提供一个方法可以获取到该对象,不能创建对象,所以将方法静态,可以通过:(类名。方法名)的形式进行访问
public static Single getInstance()
{
return s;
}
}
class SingleDemo
{
public static void main(String[] args)
{
//单例的构造函数被静态后不能创建对象,保证对象的唯一,所以通过:(类名。方法名)的形式进行访问
Single s1 = Single.getInstance();
Single s2 = Single.getInstance();
s1.setNum(23);
System.out.println(s2.getNum());//结果:23,因为Single单例里面对对象和方法进行了静态,数据共享,所以s2的值
}
}
//2)懒汉式
[java]
class Single
{
private static Single s = null;//先建立一个空对象
private Single(){}
public static Single getInstance()
{
if(s==null)//判断s是否为空,为空的话就创建对象
s = new Single();
return s;
}
}
这里的懒汉式存在安全隐患,通过加锁方式解决问题,但是问题解决了,代码增多了,所以通常在实际开发时使用饿汉式:
[java]
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s = new Single();
}
}
return s;
}
}
转载于:https://blog.51cto.com/lailjiaaie/1121858
对于java程序语言的单例设计模式讲解相关推荐
- java饿汉式有啥作用,Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?...
什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的.如果重复 ...
- 单例设计模式java,浅谈Java编程中的单例设计模式
写软件的时候经常需要用到打印日志功能,可以帮助你调试和定位问题,项目上线后还可以帮助你分析数据.但是Java原生带有的System.out.println()方法却很少在真正的项目开发中使用,甚至像f ...
- Java中设计模式之单例设计模式-1
单例作用 1 节省内存 2 可以避免多种状态导致状态冲突 单例的创建步骤 1 私有化构造方法 2 私有化声明的属性 3 getInstance 4 方法需要静态 单例分类 1.懒汉式 2.饿汉式 两种 ...
- Java面试题 实现单例设计模式(懒汉、饿汉)
懒汉: //懒汉,顾名思义比较懒,在用的时候才实例化 public class Singleton {//创建实例,注意,此时没有newprivate static volatile Singleto ...
- java实现一个单例设计模式_Java正确实现一个单例设计模式的示例
Java正确实现一个单例设计模式的示例 发布于 2021-1-12| 复制链接 分享一篇关于关于Java正确实现一个单例设计模式的示例,小妖觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的 ...
- 高频面试题2:单例设计模式
Singleton:在java中即指单例设计模式,某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式.jvm中的runtime类. 1,只能有一个实例(构造器私有化) 2,必须自行创建这个实 ...
- 什么是Singleton,单例设计模式
Singleton [ˈsɪŋɡltən] 单例模式 在java中是指单例设计模式. 单例设计模式: 单例模式可以保证系统中,应用该模式的类一个类只有一个实例.即一个类只有一个对象实例. 例如:例如 ...
- 黑马程序员——JAVA笔记——单例设计模式
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 在JAVA开发中单例设计模式是一种常见的的设计模式,一般来说单例设计模式分为懒汉式和饿汉式. 然 ...
- java day07第七课静态的和单例设计模式
静态的(static)和单例模式 main函数 主函数是一个特殊的函数,作为程序的入口,可以被jvm调用 主函数的定义 public 表示该函数的访问权限是最大的. static 代表主函数随着类的加 ...
最新文章
- php53 的mcrypt模块 , 需要用源代码进行安装
- leetcode算法题--数组中两个数的最大异或值
- Oracle中的单值函数
- 洛谷 P1004 方格取数 【多线程DP/四维DP/】
- spring health_为什么Spring的Health会再次向下,向下,向上,向上,向上和向下?...
- Java定时任务以及ScheduledThreadPoolExecutor需要注意的问题
- Java中的IO流(六)
- string的一些常见函数
- WEBPACK+ES6+REACT入门(1/7)-创建webpack4.x项目
- 卡巴斯基实验室解析勒索软件的发展与攻防
- java老九_【老九】【Java】小议转义字符
- 没有基础学习java编程,去培训机构怎么样?
- m3云服务器_“中国球迷”索尼A7RM3及镜头下的情况肖像
- 【2016浙江省赛:区间取模】E : Modulo Query | ZOJ - 3940
- macf键与功能键切换_功能切换(功能开关或功能标志)与功能分支
- 本科毕业设计 linux,GitHub - xdlinux/xdba-thesis: 西电本科毕业设计论文LaTeX模板宏包...
- 设计模式系列·王小二需求历险记(二)
- 信息重要性凸显,SSL证书为数据安全筑起高墙
- 多图详解:七种具体方法增强代码可扩展性
- vue-cropper
热门文章
- Ruby系统中的AJAX开发技术简析
- 7月个人:Windows和Linux绑定和解绑ARP 了解ARP命令的用途。 掌握ARP命令的使用。...
- Marcin Grzejszczak访谈:Spring Cloud Contract
- 动态性能视图v$lock访问很慢的解决办法
- SmartFoxServer 2X 笔记一:login request (转)
- 学计算机必懂的53个单词缩写
- 分布式通信框架 - rmi
- leetcode-79-单词搜索(用dfs解决)
- linux普通用户home目录锁定
- 《 线性代数及其应用 (原书第4版)》—— 2.3 可逆矩阵的特征