单例设计模式的步骤:
1.私有化构造函数;
2.声明本类的引用类型变量,并且使用该变量指向本诶对象;
3.提供一个公共静态的方法获取本类的对象。
单例设计模式:保证一个类中只有一个对象。
1.饿汉式:
public class design_pattern_hungerType {
//单例设计模式
private design_pattern_hungerType(){//此处私有化是禁止别的类使用实例化方式来获取懒汉对象
}
private static design_pattern_hungerType des=new design_pattern_hungerType();//一开始就准备了对象,就好比去旅游时用背包装了好多食物,故被称之为饿汉式
public static design_pattern_hungerType getinstance(){
return des;
}
public static void main(String[] args) {
design_pattern_hungerType h1 = design_pattern_hungerType.getinstance();
design_pattern_hungerType h2 = design_pattern_hungerType.getinstance();
System.out.println(h1==h2);
}
}
/*总结:创建饿汉式单例设计模式的步骤:
1.将构造私有化,不让其他类通过实例化取得对象。
2.在创建getinstance方法之前,将自己初始化,得到对象
3.通过return 方式得到返回对象*/
4.懒汉式线程使安全的,但是它的效率比较慢
2.懒汉式
//此方法是线程存在问题的懒加载方法
2.1.class design_pattern_lazyType{
private design_pattern_lazyType() {
}
private static design_pattern_lazyType lz;
private static design_pattern_lazyType getinstance(){
if(lz==null){
design_pattern_lazyType lz = new design_pattern_lazyType();
}
return lz;
}
}
/*总结:创建懒汉式(线程非安全)单例模式步骤:
1.创建私有化构造函数
2.创建懒汉式静态变量,
3.创建getinstance,通过判断语句,判断对象是否为空,对象是空的则赋予对象新对象。*/
2.2线程安全的懒汉式
class design_pattern_lazyType{
private design_pattern_lazyType() {
}
private static design_pattern_lazyType lz;
private static design_pattern_lazyType getinstance(){
if(lz==null){
safe_lz();
}
return lz;
}
private static synchronized design_pattern_lazyType safe_lz(){//创建一个线程安全的(加上锁的创建对象的静态私有方法),可以在本类任何地方使用以便创建获取加上锁的对象,从而解决懒汉式的线程问题
if(lz==null){
design_pattern_lazyType lz = new design_pattern_lazyType();
}
return lz;
}
}
总结:创建懒汉式(线程安全)的单例模式步骤:
1.创建私有化构造函数
2.创建静态带锁的对象创建方法
3.创建对象并使用带锁的静态方法直接获取线程安全的对象,从而解决懒汉式单例模式中的线程问题
这个模式比较推荐
1.私有化构造函数;
2.声明本类的引用类型变量,并且使用该变量指向本诶对象;
3.提供一个公共静态的方法获取本类的对象。
单例设计模式:保证一个类中只有一个对象。
1.饿汉式:
public class design_pattern_hungerType {
//单例设计模式
private design_pattern_hungerType(){//此处私有化是禁止别的类使用实例化方式来获取懒汉对象
}
private static design_pattern_hungerType des=new design_pattern_hungerType();//一开始就准备了对象,就好比去旅游时用背包装了好多食物,故被称之为饿汉式
public static design_pattern_hungerType getinstance(){
return des;
}
public static void main(String[] args) {
design_pattern_hungerType h1 = design_pattern_hungerType.getinstance();
design_pattern_hungerType h2 = design_pattern_hungerType.getinstance();
System.out.println(h1==h2);
}
}
/*总结:创建饿汉式单例设计模式的步骤:
1.将构造私有化,不让其他类通过实例化取得对象。
2.在创建getinstance方法之前,将自己初始化,得到对象
3.通过return 方式得到返回对象*/
4.懒汉式线程使安全的,但是它的效率比较慢
2.懒汉式
//此方法是线程存在问题的懒加载方法
2.1.class design_pattern_lazyType{
private design_pattern_lazyType() {
}
private static design_pattern_lazyType lz;
private static design_pattern_lazyType getinstance(){
if(lz==null){
design_pattern_lazyType lz = new design_pattern_lazyType();
}
return lz;
}
}
/*总结:创建懒汉式(线程非安全)单例模式步骤:
1.创建私有化构造函数
2.创建懒汉式静态变量,
3.创建getinstance,通过判断语句,判断对象是否为空,对象是空的则赋予对象新对象。*/
2.2线程安全的懒汉式
class design_pattern_lazyType{
private design_pattern_lazyType() {
}
private static design_pattern_lazyType lz;
private static design_pattern_lazyType getinstance(){
if(lz==null){
safe_lz();
}
return lz;
}
private static synchronized design_pattern_lazyType safe_lz(){//创建一个线程安全的(加上锁的创建对象的静态私有方法),可以在本类任何地方使用以便创建获取加上锁的对象,从而解决懒汉式的线程问题
if(lz==null){
design_pattern_lazyType lz = new design_pattern_lazyType();
}
return lz;
}
}
总结:创建懒汉式(线程安全)的单例模式步骤:
1.创建私有化构造函数
2.创建静态带锁的对象创建方法
3.创建对象并使用带锁的静态方法直接获取线程安全的对象,从而解决懒汉式单例模式中的线程问题
这个模式比较推荐