【Java】Java单例模式
2023-02-19 12:20:36 时间
单例模式是什么鬼?
顾名思义,只有一个实例。
首先写一个类,将类的构造函数写为私有的,并写一个静态的变量(最好是私有的)并指向null
private static SingleDemo me = null;
写一个公开的静态方法(能直接在外部类被Self所调用),用于创建实例
public static SingleDemo creatDemo()
public static SingleDemo creatDemo(){
if(me == null) me = new SingleDemo();
return me;
}
大体代码
public class SingleDemo {
private static SingleDemo me = null;
public int count=0;
private SingleDemo() {
count++;
}
//思考:单例模式为何需要返回
public static SingleDemo creatDemo() {
if(me == null) me=new SingleDemo();//单例模式重点,保证所有对象创建的是同一个实例
return me;
}
}
public class SingleTest {
public static void main(String[] args) {
// SingleDemo s1 = new SingleDemo();
SingleDemo s1 = SingleDemo.creatDemo();
SingleDemo s2 = SingleDemo.creatDemo();
System.out.println(s1.count);
s1.count++;
System.out.println(s2.count);
System.out.println(s1==s2);//true
}
}
思考:
- 单例模式创建多个对象时指向几个实例? 一个
- 如果是单列模式,两个对象使用==判断是否为真?是
- 单列模式如何实现?在上述例子中以静态变量me作为flag,如果me为null,则new一个对象,然后返回,否则直接返回,即返回首次new的“地址”(哈希码)
相关文章
- 顺序、随机IO和Java多种读写文件性能对比
- Java线上问题排查神器Arthas实战分析
- Java技术栈之JDK优雅编程特性探索与实战
- 新一代Java程序员必学的Docker容器化技术基础篇
- Java定时器演进过程和生产级分布式任务调度ElasticJob代码实战
- 旅游公司招聘Java工程师
- 专业化音频编辑处理软件——AU au软件全版本下载
- Audition 2021 For Mac软件安装教程 au软件全版本下载
- Audition 2019 For Mac软件安装教程 AU软件全版本下载
- Audition 2018 For Mac软件安装教程 AU软件全版本下载
- 专业音频 Adobe Audition 2022.6 for Mac 中文版 免费下载
- 2022-12-25:etcd可以完全替代zookeeper,原因是k8s用的etcd,不用担心不成熟。请问etcd部署在k3s中,yaml如何写?
- 微信开放平台之第三方平台开发,从哪里入手?
- Angular Feature Modules
- ?【设计模式】观察者模式
- ?【设计模式】代理模式
- ?【设计模式】建造者模式
- ?【设计模式】模板方法模式
- ?【设计模式】策略模式
- Canvas实时回显和录制