CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f
参赛话题:Java学习记录
话题描述:可以记录一下平时学习Java中的一些知识点、心得、例题、常见的问题解决
创作模板:
一、前言
- 学习概述:单例设计模式
- 学习目标:单例设计模式
二、单例设计模式
什么是单例?
单例的意思就是只能创建一个对象。
为什么要用单例?
开发中有很多类只我们只需要一个,例如:虚拟机对象!任务管理器对象
对象越多越占内存,有时只需要一个对象就可以实现业务,单例可以节约内存,提高性能!
如何实现单例?
例的实现方式目前有2种方式:
(1)饿汉单例
设计模式
通过类获取单例对象的时候,对象已经提前创建好了
实现步骤:
1.定义一个单例类
2.把类的构造方法私有
3.定义一个静态成员变量用于存储一个对象
(饿汉单例在返回对象的时候 对象要已经创建好 所以这里直接创建)
4.定义一个方法直接返回单例对象
package com.day05_singleintance;
/*
饿汉单例设计一个单例模式的类
*/
public class SingleInstanceDemo1 {
public static void main(String[] args) {
SingleInstance s1 = SingleInstance.getInstance();
SingleInstance s2 = SingleInstance.getInstance();
SingleInstance s3 = SingleInstance.ins;
System.out.println(s3);
}
}
class SingleInstance{
//2.定义一个静态成员变量用于存储一个对象 !
public static SingleInstance ins = new SingleInstance(); //对象已经提前创建好
//1.把类的构造方法私有 构造器只能在本类当中才能访问
private SingleInstance(){
}
//3.提供一个方法 返回 单例对象
public static SingleInstance getInstance(){
return ins;
}
}
(2)懒汉单例
设计模式
通过类获取单例对象的时候发现没有对象才会去创建一个对象。
实现步骤:
1.定义一个单例类
2.把类的构造方法私有
3.定义一个静态成员变量用于存储一个对象
(懒汉单例不能直接创建对象,必须需要的时候才去创建)
4.定义方法 返回单例对象 判断对象不存在才创建一次,存在直接返回
package com.day05_singleintance;
/*
饿汉单例设计模式
通过类获取单例对象的时候发现没有对象才会去创建对象
*/
public class SingleInstanceDemo2 {
public static void main(String[] args) {
SingleInstance2 s1 = SingleInstance2.getInstance();
SingleInstance2 s2 = SingleInstance2.getInstance();
System.out.println(s1 == s2);
}
}
class SingleInstance2{
//2.定义静态变量用于存储对象
private static SingleInstance2 ins; //引用类型 默认值为Null
//1.私有构造方法 避免被创建对象
private SingleInstance2(){
}
//3.定义方法返回一个单例对象
public static SingleInstance2 getInstance(){
//如果这个对象为空的话 就创建对象
if (ins == null){
ins = new SingleInstance2();
}
return ins;
}
}
CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f