设计模式-单例模式
来源:互联网 发布:西安seo工资待遇 编辑:程序博客网 时间:2024/06/10 00:39
单例模式
单例模式(Singleton Pattern)是 Java
中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。
优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 2、避免对资源的多重占用(比如写文件操作)。
缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。
使用场景: 1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。 3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。
注意事项:getInstance() 方法中需要使用同步锁 synchronized (Singleton.class) 防止多线程同时进入造成 instance 被多次实例化
public class ChocolateFactory { private boolean empty; private boolean boiled; public volatile static ChocolateFactory uniqueInstance = null; private ChocolateFactory() { empty = true; boiled = false; } public static ChocolateFactory getInstance() { if (uniqueInstance == null) { synchronized (ChocolateFactory.class) { if (uniqueInstance == null) { uniqueInstance = new ChocolateFactory(); } } } return uniqueInstance; } public void fill() { if (empty) { // 添加原料巧克力动作 empty = false; boiled = false; } } public void drain() { if ((!empty) && boiled) { // 排出巧克力动作 empty = true; } } public void boil() { if ((!empty) && (!boiled)) { // 煮沸 boiled = true; } }}
0 0
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 设计模式-单例模式
- [设计模式] 单例模式
- 设计模式--单例模式
- 设计模式---单例模式
- 设计模式--单例模式
- 设计模式 -----单例模式
- 设计模式:单例模式
- 储存过程
- 文章标题
- HDOJ 4497 GCD and LCM(质因数分解)
- android studio虚拟机两个小问题
- 线性表的顺序存储结构(查找、插入、删除等)
- 设计模式-单例模式
- Android Studio 插件
- 条件熵的辩疑
- OpenJ_Bailian - 1061 青蛙的约会
- 【DM】设计模式再回顾---职责单一+开放-封闭
- COM技术内幕读书笔记————动态链接和组件
- base之string_piece
- 栈之下一较大值二
- 【设计模式】## 1、单例设计模式 ##