设计模式之单例模式

* 单例设计模式:保证类在内存中只有一个对象。

* 如何保证类在内存中只有一个对象呢?
    * (1)控制类的创建,不让其他类来创建本类的对象。private
    * (2)在本类中定义一个本类的对象。Singleton s;
    * (3)提供公共的访问方式。  public static Singleton getInstance(){return s}

 

饿汉式和懒汉式的区别:
    思想:
        饿汉式:    类一加载就生成对象。
        懒汉式:    在调用获取对象的方法的时候生成。
    实用性:
        饿汉式:    安全,效率高。相对懒汉式会在未使用之前就占用内存。
        懒汉式:    存在线程安全漏洞,可以利用同步解决,但是效率会变低。内存方面符合了编程中的延迟加载思想。

单例写法两种:
(1)饿汉式
//饿汉式
class Singleton {
	//1,私有构造函数
	private Singleton(){}
	//2,创建本类对象
	private static Singleton s = new Singleton();
	//3,对外提供公共的访问方法
	public static Singleton getInstance() {
		return s;
	}
				
	public static void print() {
		System.out.println("11111111111");
	}
}

(2)懒汉式 面试写这种方式。有可能遇到多线程的问题
//懒汉式,单例的延迟加载模式
 class Singleton {
	//1,私有构造函数
	private Singleton(){}
	//2,声明一个本类的引用
	private static Singleton s;
	//3,对外提供公共的访问方法
	public static Singleton getInstance() {
		if(s == null)
			//线程1,线程2
			s = new Singleton();
			return s;
	}				
	public static void print() {
			System.out.println("11111111111");
		}
	}

(3)第三种格式
class Singleton {
	private Singleton() {}		
	public static final Singleton s = new Singleton();
    //final是最终的意思,被final修饰的变量不可以被更改
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值