Java 入门24 设计模式 单例
https://img2022.cnblogs.com/blog/1805814/202206/1805814-20220624224453622-1616366647.png饿汉单例模式
https://img2022.cnblogs.com/blog/1805814/202206/1805814-20220624224745277-451416815.png
SingleInstance
https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttps://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gifpackage com.ITheima._static_codeblock;
public class SingleInstance {
/**
* 1 把无参构造器私有藏起来
*/
private SingleInstance(){
}
/**
* 2 定义一个公开的静态的成员变量存储一个类的对象
* 饿汉:在这里加载静态变量的时候就会创建对象了
*/
public static SingleInstance instance=new SingleInstance();
}View CodeTest类
https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttps://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gifpackage com.ITheima._static_codeblock;
public class Test {
public static void main(String[] args) {
SingleInstance s1=SingleInstance.instance;
SingleInstance s2=SingleInstance.instance;
SingleInstance s3=SingleInstance.instance;
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s1 == s2 && s2 == s3);//true
}
}View Code
懒汉单例模式
https://img2022.cnblogs.com/blog/1805814/202206/1805814-20220624235346014-2133769210.png
SingleInstance1类
https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttps://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gifpackage com.ITheima._static_codeblock;
public class SingleInstance1 {
//1 私有化构造器
private SingleInstance1() {
}
//2 创建一个静态的成员变量存储类的对象,注意此时不能初始化对象
private static SingleInstance1 instance = null;
//3定义一个方法 ,让其他地方可以来调用获取一个对象
public static SingleInstance1 getInstance() {
//第一次获取对象
if (instance == null) {
instance = new SingleInstance1();
}
return instance;
}
}View CodeTest1类
https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttps://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gifpackage com.ITheima._static_codeblock;
public class Test1 {
public static void main(String[] args) {
SingleInstance1 s1 = SingleInstance1.getInstance();
SingleInstance1 s2 = SingleInstance1.getInstance();
SingleInstance1 s3 = SingleInstance1.getInstance();
System.out.println(s1 == s2 && s2 == s3);//true
}
}View Code
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]