设计模式之单例模式

设计模式(单列模式)

1.1什么是设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式的目的:为了可重用代码、让代码更容易被他人理解、保证代码可靠性。就如我们现实生活中(打仗使用战争的战阵、三六计,公司的结构模式、管理模式)。
1.2 什么是单例模式
单例模式,我们可以从字面的意思理解,就是只有一个实例存在的意思。就像现在国家的主席(总统),以及合法的老婆,这些只会存在一个。那么在java的世界里面,那些东西或者场景要求对象必须为单例呢?比如配置文件,工具类,线程池,日志,数据库连接等等,在实际开发中都要求是只有一个实例存在的,这时候我们就会用到单例模式。单例模式有两种饿汉模式和懒汉模式。
单例模式的特点:
(1)有且只有一个实例存在
(2)构造方法私有化,只能自己创建唯一的实例
(3)以自己实例为返回值的静态的公有的方法给外部进行调用
1.3什么是饿汉模式
编程世界里的好多名词概念都是来自现实生活,非常形象生动。所以我们有可以从字面的意思理解,就是处于饥饿状态的流浪汉,专业一点就是在类加载的时候就创建类的唯一的一个实例,不会等到你去调用的时候再去创建类的实例。代码如下:
[java] view plaincopy
packagecom.pattern.singleton;

/**
* 单例模式之饿汉模式(在类加载的时候就创建了类的实例)
* 应用场景:配置文件的读取,工具类,线程池,日志,数据库连接
* 作用:保证有且只有一个实例存在
* @author wz
*
*/
public class EagerSingleton {
//1.创建一个类的实例,并且定义为private static 的类
private static EagerSingleton singleton = new EagerSingleton();
//2.构造方法私有化,防止外部调用直接new一个实例
private EagerSingleton(){

}
//3.以自己实例为返回值的静态的公有的方法给外部进行调用
public static EagerSingleton getInstance(){
return singleton;
}
}
1.4什么是懒汉模式
懒汉模式就是等到你去调用的时候再去创建类的实例,并且只会在第一次进行创建类的实例。代码如下:
[java] view plaincopy
packagecom.pattern.singleton;

/**
* 单例模式之懒汉模式(在调用类第一次时候创建类的实例)
* 应用场景:配置文件的读取,工具类,线程池,日志,数据库连接
* 作用:保证有且只有一个实例存在
* @author wz
*
*/
public class LazySingleton {
//1.声明一个类的实例,并且定义为private static
private static LazySingleton lazySingleton = null;
//2.构造方法私有化,防止外部调用直接new一个实例
private LazySingleton (){

}
//3.以自己实例为返回值的静态的公有的方法给外部进行调用
public static LazySingleton getInstance(){
if(lazySingleton == null){
lazySingleton = new LazySingleton();
}
return lazySingleton;
}

}

1.5 “饿汉模式” VS “懒汉模式”
主要区别如下:
(1) 饿汉模式在加载类的时候比较慢,但运行时获取对象的速度比较快;懒汉模式在加载类的时候比较快,但运行时获取对象的速度比较慢;
(2) 饿汉模式是线程安全的,懒汉模式是非线程安全的。一般推荐使用饿汉模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值