单例模式是指某个类只允许存在一个实例对象,例如在打印机打印文件时,一次只允许打印一个文件;一个程序里的相同弹出对话框只允许有一个。
单例模式通常在需要控制对象数量以节省资源消耗的情况,在实际软件设计中非常常用,特别是在多线程多进程时,可以避免产生多个实例对象,造成资源浪费。
实现的方法是在类里创建一个private构造函数,这样其他类就无法通过new的方式生成其实例,只能通过类内部所定义的getInstance()方法生成实例,具有私有的构造函数是单例模式的一个显著特征。单例模式的一个简单示例类图如下图所示:
SingleInstance类的代码如下:
package singleton;
public class SingleInstance {
//创建类时创建一个实例
private static SingleInstance singleInstance=new SingleInstance();
//私有构造函数
private SingleInstance() {};
//生成单实例
public static SingleInstance getSingleInstance() {
return singleInstance;
}
public void showMessage() {
System.out.println("单例模式信息!");
}
}
调用SingleInstance生成对象的错误方法:用new方法生成对象时,编译器会报错。
调用SingleInstance生成对象的正确方法:
public class SingletonPattern {
public static void main(String[] args) {
SingleInstance singleInstance = SingleInstance.getSingleInstance();
singleInstance.showMessage();
/*错误的调用方法
SingleInstance singleInstance = new SingleInstance();
*/
}
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
打印机
+关注
关注
10文章
804浏览量
47505 -
编译器
+关注
关注
1文章
1663浏览量
50476
发布评论请先 登录
相关推荐
热点推荐
dlpc3470 Splash Pattern模式为什么会设置最大Pattern周期,这个最大周期能否更改?
dlpc3470 Splash Pattern 模式为什么会设置最大 Pattern 周期,这个最大周期能否更改?
发表于 02-19 08:41
DLP4500每个pattern的曝光时间怎么设置?
我的应用将图片烧录到flash中然后在pattern模式下play。但是由于要显示的pattern太多了,总是需要不停地upload bin文件,时间都花在了烧录bin文件上了。因此我想用
发表于 02-24 08:17
请问external pattern sequence子模式的正确使用方式是什么?
在做结构光成像的相关研究中,想投影大量正弦条纹图(比如60张)并配合相机实现外触发,根据查阅用户手册和编程手册,应该将lightcrafter设置为hdmi模式下的external pattern
发表于 02-28 08:38
2018年Python面试必看的10个面试题
,单例模式是最好的解决方案。__new__()在__init__()之前被调用,用于生成实例对象。利用这个方法和累的属性的特点可以实现设计
发表于 07-18 14:52
OpenHarmony中的单例模式实践
本文件简述了单实例的基本知识及其应用场景,并以OpenHarmony中的代码为例分别从C和C++语言角度来分析和学习单实例模式。单实例
发表于 09-15 09:27
利用golang优雅的实现单实例分享
1、利用golang优雅的实现单实例平时编写代码过程中,经常会遇到对于全局角度只需运行一次的代码,比如全局初始化操作,设计模式中的单例
发表于 10-17 16:46
关于iOS开发单例使用问题
原文链接:Avoiding Singleton Abuse 导语 单例(Singletons),是Cocoa的核心模式之一。在iOS上,单
发表于 09-25 16:25
?0次下载
单例模式详解
是private的话,会不更好的封装该内呢?我主要是应用在使用普通类模拟枚举类型里,后来发现这就是传说中的单例模式。构造函数弄成private 就是单
发表于 09-27 15:10
?0次下载
为什么C++单例模式不能直接全部使用static变量和static函数呢?
通过getInstance()函数获取单例对象,这种模式的关键之处不是在于强迫你用函数来获取对象。关键之处是让static对象定义在函数内部,变成局部static变量。看下这种实现方式
嵌入式C语言软件设计之装饰器模式(Decorator Pattern)
装饰器模式(Decorator Pattern),是结构型设计模式的一种,装饰器模式允许向一个现有的对象添加新的功能,而又不改变其对象结构,这种方式比使用子类继承的方式更加灵活。
发表于 03-01 10:55
?613次阅读
评论