单例设计模式:保证一个类在内存中只有一个对象。
模式:模式就是解决一类问题的固定步骤。
23种设计模式:
1. 单例数据模式
2.模板设计模式
3.装饰者设计模式
4.观察者设计模式
5.工厂设计模式
。。。
饿汉单例设计模式的步骤:
1.私有化构造函数
2.声明本类的引用类型变量,并且使用该变量指向本类对象
3.提供一个公共静态的方法获取本类的对象
懒汉单例设计模式的步骤:
1.私有化构造函数
2.声明本类的引用类型变量,但是不要创建对象
3.提供一个公共静态的方法获取本类的对象,获取之前先判断是否已经创建了本类对象,如果创建了,那么直接返回对象即可,如果还没有创建,
那么先创建本类的对象,然后再返回
推荐使用:饿汉单例设计模式。 因为懒汉单利设计模式会存在线程安全问题,目前还不能保证一个类在内存中只有一个对象
package com.cn.singleton;
/**
* Author:Liu Zhiyong(QQ:1012421396)
* Version:Version_1
* Date:2016年8月25日21:48:16
* Desc:
单例设计模式:
懒汉单例设计模式(线程安全问题解决方案)
步骤:
1.私有化构造函数。
2.声明本类的引用类型变量,但是不要创建对象。
3.声明一个公共静态的方法获取本类的对象,获取之前先判断是否已经创建了本类的对象了,如果已经创建了就不要在创建直接返回即可,如果还没有创建,那么就先创建本类的引用类型变量,然后再返回。
*/
/**
* 懒汉单例设计模式
* @author zhiyong
*
*/
class Singleton1{
//2.声明本类的引用类型变量,但是不要创建对象。
private static Singleton1 s;
//1.私有化构造函数。
private Singleton1(){
}
//3.声明一个公共静态的方法获取本类的对象
public static Singleton1 getInstance(){
if(s==null){ //这里加一次判断,效率更高
synchronized ("锁") {
if(s == null){
s = new Singleton1();
}
}
}
return s;
}
}
/**
* 饿汉单例设计模式
* @author zhiyong
*
*/
class Singleton2{
//1.私有化构造函数
public Singleton2() {
}
//2.声明本类的引用类型变量,并且使用该变量指向本类对象
private static Singleton2 s = new Singleton2();
//3.提供一个公共静态的方法获取本类的对象
public static Singleton2 getInstance(){
return s;
}
}
public class Demo1 {
}