定义:单例模式是Java中最简单的设计模式之一,这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。达到一次创建,多次使用。
我对于单例模式的了解比较早,但是这种设计模式在我的工作中并不是很常见的设计模式。我目前了解到的实际用到的单例模式就是Spring的依赖注入,默认为单例模式的对象。
那么什么是单例模式呢?
正常我们在Java中使用对象的过程是:创建对象 ——> 执行方法 ——> 销毁对象释放内存。
这样的缺点就是需要频繁的创建、销毁对象。并且容易对资源进行多重占用。
这时候就需要用到我们的单例模式,单例模式是什么样子的呢?单例模式创建一个对象后,会重复使用此对象进行方法的调用。
优点:
1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
2、避免对资源的多重占用(比如写文件操作)。
缺点:
没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。
在代码中我们如何实现单例模式创建对象呢?
1.创建单例类
public class SingleObject {
//创建 SingleObject 的一个对象
private static SingleObject single = new SingleObject();
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
return single;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
2.获取单例模式对象
public class SingletonPatternDemo {
public static void main(String[] args) {
//不合法的构造函数
//编译时错误:构造函数 SingleObject() 是不可见的
//SingleObject object = new SingleObject();
//获取唯一可用的对象
SingleObject single = SingleObject.getInstance();
//显示消息
single.showMessage();
}
}
高级版的教程在菜鸟教程中有比较详细的过程我就不在此赘述了,这篇文章的意义就是希望能够通过自己的理解尽可能形象的解释一下设计模式,使得抽象的内容理解起来变得简单些。