单例模式
来源:互联网 发布:厦门大学网络教育本科 编辑:程序博客网 时间:2024/06/10 18:22
单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
意图
保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决
一个全局使用的类频繁地创建与销毁。- 何时使用:当您想控制实例数目,节省系统资源的时候。
- 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。
- 关键代码:构造函数是私有的。
优点
1.在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
2、避免对资源的多重占用(比如写文件操作)。
缺点
没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。注意事项:getInstance() 方法中需要使用同步锁 synchronized (Singleton.class) 防止多线程同时进入造成 instance 被多次实例化。
实现
我们将创建一个 SingleObject 类。SingleObject 类有它的私有构造函数和本身的一个静态实例。
- 创建一个 Singleton 类。
public class SingleObject { // 创建 SingleObject 的一个对象 private static SingleObject instance; // 让构造函数为 private,这样该类就不会被实例化 private SingleObject() { } // 获取唯一可用的对象 public static SingleObject getInstance() { if (instance == null) instance = new SingleObject(); return instance; } public void showMessage() { System.out.println("Hello World!"); }}
- 从 singleton 类获取唯一的对象。
public class SingletonPatternDemo { public static void main(String[] args) { // 不合法的构造函数 // 编译时错误:构造函数 SingleObject() 是不可见的 // SingleObject object = new SingleObject(); // 获取唯一可用的对象 SingleObject object = SingleObject.getInstance(); // 显示消息 object.showMessage(); }}
效果实现:
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- Android 用Activity实现加载等待界面
- struts 利用检测器判断密码是否一致
- Spring实战笔记 1
- python学习(二)
- 英语月总结
- 单例模式
- Windows 调用Dll
- [数据结构]冒泡排序
- spring3注解方式无法注入servlet和filter
- Deep Learning based Large Scale Visual Recommendation and Search for E-Commerce
- linux的命令解析器和常用的快捷键(以及简单的目录结构)
- 正式工作一年的一些小感想
- eclipse 卸载svn 插件 安装svn
- 4.1 11091 最优自然数分解问题