单例模式是指某个类只允许存在一个实例对象,例如在打印机打印文件时,一次只允许打印一个文件;一个程序里的相同弹出对话框只允许有一个。
单例模式通常在需要控制对象数量以节省资源消耗的情况,在实际软件设计中非常常用,特别是在多线程多进程时,可以避免产生多个实例对象,造成资源浪费。
实现的方法是在类里创建一个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文章
761浏览量
45506 -
编译器
+关注
关注
1文章
1614浏览量
49006
发布评论请先 登录
相关推荐
2018年Python面试必看的10个面试题
,单例模式是最好的解决方案。__new__()在__init__()之前被调用,用于生成实例对象。利用这个方法和累的属性的特点可以实现设计
发表于 07-18 14:52
OpenHarmony中的单例模式实践
本文件简述了单实例的基本知识及其应用场景,并以OpenHarmony中的代码为例分别从C和C++语言角度来分析和学习单实例模式。单实例
发表于 09-15 09:27
利用golang优雅的实现单实例分享
1、利用golang优雅的实现单实例平时编写代码过程中,经常会遇到对于全局角度只需运行一次的代码,比如全局初始化操作,设计模式中的单例
发表于 10-17 16:46
设计模式在网管系统中的设计与实现
将设计模式引入网管系统可以减少管理系统设计的复杂度,提高系统的开发效率。在分析设计模式中的Singleton模式、Adapter模式、Obs
发表于 03-04 22:20
•14次下载
关于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
•382次阅读
评论