**
看了这篇文章,保你学会单例(Singleton)设计模式
**
设计模式概述
设计模式是一套被反复使用的、经过验证的、能够提高软件开发效率的解决问题的经验总结。设计模式主要是针对软件开发过程中常见的一些问题,通过提供通用的解决思路和方法,帮助软件开发人员更加高效地完成软件设计任务。
一般来说,设计模式主要包括三类设计模式,即创建型模式、结构型模式和行为型模式。创建型模式关注对象的创建机制,包括单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式等。结构型模式关注对象与对象之间的协作,包括适配器模式、桥接模式、装饰者模式、外观模式、享元模式、组合模式等。行为型模式关注对象的行为,包括观察者模式、命令模式、迭代器模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式和模板方法模式等。
通过使用设计模式,我们可以在软件开发中快速解决常见的问题,提高代码的可读性、可维护性和可扩展性,使得软件开发过程更加高效、灵活和可靠。
一、什么是单例模式?
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。
二、实现思路
如果我们要让类在一个虚拟机中只产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但是在类的内部仍可以产生类的对象。因为在类的外部开始无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以指向类内部产生的该类对象的变量也必须定义成静态的。
三、单例模式的两种实现方式
1. 饿汉式
class Bank{
//1.类的构造器私有化
private Bank(){
}
//2.在类的内部创建当前类的实例
//4.此属性也必须声明为static的
private static Bank instance=new bank();
//3.使用getXxx()方法获取当前类的实例,必须声明为static的
public static Bank getInstance(){
retuen instance;
}
}
2. 懒汉式
class GirlFriend{
//1.类的构造器私有化
private GirlFriend(){
}
//2.在类的内部创建当前类的实例
//4.此属性也必须声明为static的
private static GirlFriend instance=null;
//3.使用getXxx()方法获取当前类的实例,如果未创建对象,则方法内部进行创建
public static GirlFriend getInstance(){
if(instance==null)
{
instance=new GirlFriend();
}
return instance;
}
}
四、总结(两种模式的特点和优缺点)
1. 特点:
饿汉式: “立即加载”,随着类的加载,当前唯一实例就创建了。
懒汉式: “延迟加载”,在需要的时候,进行创建对象。
2. 优缺点:
饿汉式:(优点)写法简单,由于内存中较早加载,使用更方便、更快。是线程安全的。(缺点)内存中占用时间较长。
懒汉式:(优点)在需要的时候进行创建,节省空间。(缺点)线程不安全。