单例模式整理

一、单例模式

        概念定义:设计模式中的最早的定义:保证一个类只有一个实例,并提供一个访问它的全局访问点。

                           java中单例模式的定义:一个类有且只有一个实例并且,并且自行实例化向整个系统提供。

                      写一个单例模式引用的举例:

                      

public class Singleton {
    private String name;
    public String getName()
    {
	return name;
    }
    public void setName(String nAme)
    {
	this.name=nAme;
    }
    
    //该类只能有一个实例
    //设置构造方法私有,避免了类在外部被实例化
    private Singleton()
    {
	
    }
    //申明实例对象
    private  static Singleton instance;
    //通过getInstance()实例化Singleton
    public static Singleton getInstance()
    {
	if(instance==null)
	{
	    instance=new Singleton();
	}
	return instance;
    }
    
    public void getInfo()
    {
	System.out.println("模式:"+name);
    }
}

测试类:

public class SingletonTest {

    
    public static void main(String[] args) {
	TestDanli sl=TestDanli.getInstance();
	
	System.out.println(sl.getName());
	
	
    }
}


单例模式的三个特征:

1、只能有一个实例。

2、必须自己创建唯一的实例。

3、将创建的实例提供给所有对象。

三种单例的实现:

(1)饿汉式单例:

在类初始化的时候就已经自己实例化

/**
 * 
 *=======================================================	
 * @author xing
 * @【饿汉式单例模式】
 *=======================================================
 */
public class SingletonD1 {
    
    //私有的构造函数
    private SingletonD1(){}
    
    //自己唯一的实例,初始化,并且在初始化的时候实例化
    //private static final SingletonD1 sl=new SingletonD1();
    //static表示静态方式,也就是说只能被调用执行一次,那么这里定义可以不用final
    private static SingletonD1 sl=new SingletonD1();
    
    //把自己唯一的实例交给所有的对象让他们可以调用
    public static SingletonD1 getInstance()
    {
	return sl;
    }
}
(2)懒汉式单例:

在类第一次调用实例的时候初始化

package com.xing.singleton;

/**
 * 
 *=======================================================	
 * @author xing
 * @【懒汉式单例类】
 *=======================================================
 */
public class SingletonD2 {
    
    //私有构造函数
    private SingletonD2(){}
    //初始化单例类唯一的实例
    private static SingletonD2 sl=null;
    //让所有的对象可以调用自己的实例,但是只能调用一次
    public static SingletonD2 getInstance()
    {
	if(sl==null)
	{	
	    //将唯一的实例实例化
	    sl=new SingletonD2();
	    return sl;
	}
	return sl;
	
    }
}



 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值