基于java的设计模式(2)单例模式
来源:互联网 发布:大数据人才需求趋势 编辑:程序博客网 时间:2024/06/05 18:10
单例模式
* 作用:保证整个应用程序中某个实例有且只有一个
* 类型:饿汉模式、懒汉模式
demo1:
package Singleton;
public class Singleton {
//将构造方法私有化,避免外部直接创建实例
private Singleton(){
}
//创建类的实例,使用 static
public static Singleton instance= new Singleton();
}
package Singleton;
public class testSingleton {
public static void testSingleton(){
Singleton instance1=Singleton.instance;
Singleton instance2=Singleton.instance;
if(instance1==instance2){
System.out.println("同一个实例");
}else{
System.out.println("不是同一个实例");
}
}
public static void main(String[] args) {
testSingleton();
}
}
运行结果:同一个实例
在这个demo1的基础上修改代码,使用一个public方法对象提供获取该实例的方法。
package Singleton;
public class Singleton {
//将构造方法私有化,避免外部直接创建实例
private Singleton(){
}
/*创建类的实例,使用 static
public static Singleton instance= new Singleton();*/
//创建类的实例,使用 static
private static Singleton instance= new Singleton();
//使用static即可在外部使用类名进行访问
public static Singleton getInstance(){
return instance;
}
}
public static void testSingleton2() {
Singleton instance1 = Singleton.getInstance();
Singleton instance2 = Singleton.getInstance();
if (instance1 == instance2) {
System.out.println("同一个实例");
} else {
System.out.println("不是同一个实例");
}
}
public static void main(String[] args) {
/*testSingleton();*/
testSingleton2();
}
}
运行结果:同一个实例
上述这个就是饿汉模式,在类加载时就创建了该类的唯一实例。
下面讲述懒汉模式
demo3
// 懒汉模式
private static Singleton instance;
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
懒汉模式和饿汉模式的对比
饿汉模式在类的加载时就创建了一个实例,所以在加载的时候慢,获取的时候快
懒汉模式在类的加载时快,第一获取的时候需要创建对象,所以慢
- 基于java的设计模式(2)单例模式
- java的设计模式---单例模式
- java的设计模式---单例模式
- java的设计模式--单例模式
- Java设计模式--单例模式2
- JAVA设计模式--单例模式2
- java设计模式(单例模式)
- JAVA设计模式(单例模式)
- 设计模式----单例模式(java)
- (设计模式)单例模式-java
- java的设计模式(一)单例模式
- Java设计模式之单例模式(singleton模式)
- java设计模式之单例模式(Singleton模式)
- Java设计模式之单例模式(singleton模式)
- java 设计模式,单例设计模式
- java设计模式-单例设计模式
- java设计模式-单例设计模式
- Java设计模式 单例设计模式
- JS call()方法和apply()方法
- 谈消息安全传输中的技术点
- 浅谈JS函数调用模式,闭包以及bind()方法
- BZOJ 1012 [JSOI2008]最大数maxnumber
- 开启电脑远程连接
- 基于java的设计模式(2)单例模式
- Python 进制转换
- HTML中如何实现更换网页皮肤
- map集合的四种遍历方式
- 电磁波和声波对比实验
- js的变量提升和函数提升
- matlab版hog+svm图像二分类
- JavaScript中动态创建和操作select元素
- Awesome Semantic Segmentation