二十三种设计模式之单例模式

**

二十三种设计模式之单例模式

**

今天我们来共同学习一下,在程序开发过程中,用来提高编程效率的二十三种设计模式。
这23种设计模式,总共呢可以分为三大类:
1、创建型模式:
单例模式( Singleton),工厂方法模式(Factory Method),抽象工厂模式(Abstract Factory),创建者模式(Builder),原型模式(Prototype)
2、结构型模式:
适配器模式(Adapter),桥接模式(Bridge),装饰模式(Decorator),组合模式(Composite),外观模式(Facade),享元模式(Flyweight),代理模式(Proxy)
3、行为型模式:
模板方法模式(Template Method),命令模式(Command),迭代器模式(Iterator),观察者模式 (Observer),中介者模式(Mediator),备忘录模式(Memento),解释器模式(Expression),状态模式(State),策略模式(Strategy),职责链模式(Chain of Responsibility),访问者模式(Visitor)

在接下来的二十几篇文章中,我们就按照上面的顺序来学习者23种设计模式。

单例模式

1、核心作用:
保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。
2、常见场景:
最典型的案例就是Windows的Task Manager(不管我们启动多少个管理器,总是只有一个在运 行)。还有就是回收站也是一个单例应用。
在Servlet编程中的Application也是一个单例的典型应用。
在Spring中,每个Bean默认就是单例的,这样做的优点就是Spring容器可以管理。
在Spring MVC框架/struts1框架中,控制器对象也是单例。
3、单例模式的优点:
一个单例模式只能生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决。
单例系统可以在系统设置全局的访问点,优化环共享资源访问。
4、实现方式:
主要有饿汉式和懒汉式两种。实现代码如下:
懒汉式:

package Singleton;

//饿汉式
public class SingletonDemo1 {

	private static SingletonDemo1 instance = new SingletonDemo1();   //类初始化时立即加载这个对象,因此不管你用不用得到,都占用了一定的资源。

	private SingletonDemo1(){
	
	}
	//方法没有同步,调用效率高
	public static SingletonDemo1 getInstance(){
		return instance;
	}
}

饿汉式:

package Singleton;

//懒汉式,实现了延迟加载
public class SingletonDemo2 {
	private static SingletonDemo2 instance;   //未new一个新的SingletonDemo2,在需要时才new
	//私有化的构造器
	private SingletonDemo2(){
	
	}
	public static synchronized SingletonDemo2 getInstance(){    //synchronized保证一次只有一个线程调用,即保证了线程同步,因此调用效率低
		//整个if语句保证s只被复制一次
		if(instance==null){
			instance =new SingletonDemo2();
		}
		return instance;
	}
}

总结

总结来看,我们发现,单例模式有五个核心单词,那就是private,static,private,public,static。

最后呢,单例模式还有三种实现方式,双重监测锁式,静态内部类式,枚举单例。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值