设计模式--单例模式

来源:互联网 发布:windows照片查看器重装 编辑:程序博客网 时间:2024/06/04 18:31

一、设计模式简介

个人觉得设计模式是一种思想,是长久以来开发者反复使用,多数人所认可、知晓的一种经过分类设计、代码设计的经验总结。使用设计模式的目的是为了提高代码的重用性,让代码更加容易被理解、提高代码的规范、保证程序的可靠性。

二、单例模式简介

单例模式是设计模式中最简单、最常用、最容易理解的一种设计模式。单例模式是程序中有且只有一个的文件,例如配置文件、工具类、日志等等。这些文件在一个程序中通常要保证有且只有一个,如果创造出多个实例,就会导致很多的问题。比如占用过多的资源,程序中的结果数据不统一等等问题;

三、懒汉模式和饿汉模式

单例模式中常见的两种模式包括懒汉模式和饿汉模式;解释、区别详见代码的注释

3.1:饿汉模式

package com.ck.singleton;/** * Created by cn_CK on 2017/12/15. * 饿汉模式:在创建类的时候,不管程序是否要使用到对应的实例,都会自动创建类的实例,方便调用; */public class Singleton_1 {//    1、创建一个类的私有的构造方法,确保外部方法中不能直接创建对象;    private Singleton_1(){            }//    2、创建类的唯一实例,确保类中能且只能创建一个类的实例;    private static Singleton_1 s1 = new Singleton_1();//    3、类中提供一个用于实例调用的方法,方便外部进行使用;    public static Singleton_1 getSingleton(){        return s1;    }}
3.2:懒汉模式

package com.ck.singleton;/** * Created by cn_CK on 2017/12/15. * 懒汉模式:在创建类的时候,并不会直接创建类的实例,而是在外部程序需要使用类的实例的时候才会进行创建对应的实例, *          如果在程序进行调用实例时,该类已经创建过实例的话,就直接返回之前创建的实例,确保类中有且只有一个实例。 */public class Singleton_2 {//    1、创建私有的构造方法    private Singleton_2(){}//    2、声明一个类的实例,并不用直接创建类的实例;    private static Singleton_2 s2;//    3、提供外部调用获取类的实现的一个接口;    public static Singleton_2 getSingleton(){        if (s2 != null){//判断类中是否已经创建过实例            return s2;        }else {            return new Singleton_2();        }    }}
四、懒汉模式和饿汉模式的区别

从上面的代码中不难看出,在实现代码的时候,懒汉模式在类中只是声明了自己类中的实例,并没有给与它进行具体的实现;而饿汉模式在类中声明实例的时候,就已经直接给与这个实例进行了实现;由于两种模式的创建实例的时期不同,所以到导致了各自不同的特点,懒汉模式在加载类的时候速度比较快,但是在执行获取类中的对象的实例的时候就会相应的速度变缓慢,饿汉模式在加载类的时候速度比较慢,但是在执行获取类中对象的实例的时候,速度是很快的;在线程安全的方面他们也存在区别,懒汉模式是线程不安全的,而饿汉模式则是线程相对安全的。


(以上内容都是根据自我理解整理的,如果有错误或者不足的地方,欢迎各位大咖留言指教。3q~~~)