小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
从上一篇文章设计模式之装饰模式(一)中估计大家都已经对java设计模式有了初步的理解,今天呢,阿Q就给大家讲一下另一种设计模式——单例设计模式。
首先我们先来了解一下它的概念,单例模式是设计模式中最简单的形式之一,这一模式的目的是使得类的一个对象成为系统中的唯一实例,也就是保证类在内存中只有一个对象。
要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。它主要是为了解决全局使用的类频繁地创建与销毁浪费系统资源。
必要条件
单例模式的必要条件有三个:
- 一是类只能有一个实例;
- 二是它必须自行创建这个实例;
- 三是它必须自行向整个系统提供这个实例。
何时使用
当您想控制实例数目,节省系统资源的时候。
简单案例
首先需要创建一个单例类
public class SingleObject {
//创建 SingleObject 的一个对象
private static SingleObject instance = new SingleObject();
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
创建main函数:
public class SingletonPatternDemo {
public static void main(String[] args) {
//不合法的构造函数
//编译时错误:构造函数 SingleObject() 是不可见的
//SingleObject object = new SingleObject();
//获取唯一可用的对象
SingleObject object = SingleObject.getInstance();
//显示消息
object.showMessage();
}
}
执行结果为:Hello World!
看到这,你对单例模式是不是有了简单的了解了?下文我们来谈一谈单例模式的几种实现方式。如果你有不同的意见或者更好的idea,欢迎联系阿Q,添加阿Q可以加入技术交流群参与讨论呦!