单例设计模式(饿汉式,懒汉式)

week6(Sunday)

单例设计模式

1、什么是设计模式?
    设计模式:是一套反复使用、多数人知晓的经过分类、编目的代码分布经验的总结
                 设计模式是软件开发人员在软件开发过程中一般问题的解决方案。
                 Java常见设计模式有 23种,可分为 三类:
                  一、创建性      二、结构型       三、行为型
   
2、单例设计模式--(懒汉式、饿汉式)
       目的:使得类的一个对象成为该类系统中的唯一一个实例,自行实例化并向整个系统提供这个实例
        实现步骤: 1、只提供私有的构造方法(防止外部创建对象)
      2、只提供一个静态的私有对象

      3、提供一个公有的方法用来创建获取静态的私有对象

-------2.1 饿汉式
   创建对象实例时直接初始化, 用空间换时间(能保证线程安全)
//饿汉式
			public class Singleton {
				//1、只提供私有的构造方法
				private Singleton(){
				}
				//2、只提供静态的私有对象并完成初始化
				private static Singleton singleton = new Singleton();
				//3、提供一个公有的方法用来创建获取静态的私有变量
				public static Singleton getSingleton(){
					return singleton;//返回该唯一对象
				}
			}
-------2.2 懒汉式
   等到需要使用对象时再创建对象, 用时间换空间(线程不安全)
//懒汉式
			public class Singleton2 {
				//1、只提供私有的构造方法
				private  Singleton2(){
				}
				//2、只提供一个静态的私有对象,不初始化对象
				private static Singleton2 singleton2;
				//3、提供一个公有的方法用来创建获取静态的私有对象
				public static Singleton2 getSingleton2(){
					if(singleton2 == null){
						singleton2 = new Singleton2();//创建对象
					}
					return singleton2;
				}
			}	

-------2.3 单例模式设计调用方法   
//单例设计模式类使用方法
public class SingletonTest {
    public static void main(String[] args) {
        //饿汉式
        Singleton singletonOne = Singleton.getSingleton();
        Singleton singletonTwo = Singleton.getSingleton();

        //懒汉式
        Singleton2 singleton2One = Singleton2.getSingleton2();
        Singleton2 singleton2Two = Singleton2.getSingleton2();
    }
}

3、单例设计模式(饿汉式与懒汉式)总结
          优点: 1、在内存中只有一个对象,节省空间
  2、避免频繁创建销毁对象,提高性能
  3、避免对共享资源的多重占用


  缺点: 1、扩展比较困难

  2、若实例化长期不利用,系统会自动进行垃圾回收,造成对象状态丢失

使用场景:  1、创建对象时占用资源过多,但同时又要用到该类对象
2、对系统内资源要统一读写,如读写配置信息
3、当多个实例存在可能引起程序逻辑错误,如号码生成器

发布了12 篇原创文章 · 获赞 39 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/sjq__python_web/article/details/80543297