设计模式:单例模式
来源:互联网 发布:ubuntu 修改默认字体 编辑:程序博客网 时间:2024/04/29 17:33
单例模式:
单利模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。
其实,GoF对单例模式的定义是:保证一个类只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。
为什么使用单例模式?
在应用系统开发中,我们常常有以下需求:在多个线程之间,比如servlet环境,共享同一个资源或者操作同一个对象
在整个程序空间使用全局变量,共享资源
大规模系统中,为了性能的考虑,需要节省对象的创建时间等等。
因为singleton模式可以保证为一个类只生成唯一的实例对象,所以这些情况,singleton模式就派上用场了。
单例模式实现:
1.饿汉式
package singleton;
/**
* 车票的单例
* 饿汉式
* @author guosheng
*
*/
public class CardSingleTon {
private static CardSingleTon cst = new CardSingleTon(50);
public CardSingleTon(int cardNum){
this.cardNum = cardNum;
}
private int cardNum;
public int getCardNum() {
return cardNum;
}
public void setCardNum(int cardNum) {
this.cardNum = cardNum;
}
public static CardSingleTon getCardSingleTon(){
return cst;
}
}
2.懒汉式
package singleton;
/**
* 车票的单例
* 懒汉式----------------多线程不安全
* @author guosheng
*
*/
public class CardSingleTon {
//private static CardSingleTon cst = new CardSingleTon(50);
private static CardSingleTon cst;
public CardSingleTon(int cardNum){
this.cardNum = cardNum;
}
private int cardNum;
public int getCardNum() {
return cardNum;
}
public void setCardNum(int cardNum) {
this.cardNum = cardNum;
}
public static CardSingleTon getCardSingleTon(){
if(null == cst){
cst = new CardSingleTon(50);
}
return cst;
}
}
3.双重检查
/**
* 车票的单例
* 双重检查
* @author guosheng
*
*/
public class CardSingleTon {
//private static CardSingleTon cst = new CardSingleTon(50);
private static CardSingleTon cst;
public CardSingleTon(int cardNum){
this.cardNum = cardNum;
}
private int cardNum;
public int getCardNum() {
return cardNum;
}
public void setCardNum(int cardNum) {
this.cardNum = cardNum;
}
public static CardSingleTon getCardSingleTon(){
if(null == cst){
synchronized(cst){
if(null == cst){
cst = new CardSingleTon(50);
}
}
}
return cst;
}
}
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 设计模式-单例模式
- [设计模式] 单例模式
- 设计模式--单例模式
- 设计模式---单例模式
- 设计模式--单例模式
- 设计模式 -----单例模式
- 设计模式:单例模式
- R-CNN原理
- mt6735 L版本如何抓取更详细pcm dump
- 利用Centos 7内置的 crontab 进行系统的定时关机 格式: * * * * * command 分 时 日 月 周 命令 1 2 3 #编辑定时任务: crontab -e
- 【Unity】模型烘培参数
- Java并发之AQS详解
- 设计模式:单例模式
- Automotive radar 信号处理 第3课 方位估计
- leetcode 50. Pow(x, n)
- 电子转战AI
- 浅析C# new和override的区别
- AndroidStudio填坑
- Ubuntu16.04下安装Caffe记录(GPU)
- ACCESS 复制文件
- 第四章 SpringMVC--Controller接口控制器详解