设计模式
来源:互联网 发布:中国也门撤侨事件 知乎 编辑:程序博客网 时间:2024/05/29 19:55
创建型模型
一、单例模式
解释:单例模式,就是说,在一个jvm进程下,关于某个类的对象,只会存在该类的唯一的一个对象,不会存在多个对象。(通常的说法也就是:一个运行中的程序,关于某个类只存有一个对象)
应用场景:
1. 全局配置
2. 全局线程池
3. 任务管理器(eg:win 任务窗口)
判断单例模式的方式:
资源共享
实现方式
● 饥汉模式
当类被加载的时候,就实例化出该类的一个对象
Code example
public class Singleton{ private static final Singleton = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return instance; }}
特点:简单安全,程序无需用到该对象也会被创建,当一个JVM中存在大量这种方式被创建而不被使用的对象,会有资源浪费情况。
● 懒汉模式
当需要使用到该类的对象的时候,才会被实例化,并且该类的对象只会被初始化一次且只有一个该对象
Code example
public class Singleton{ private volatile static Singleton instance = null; private Single(){} public static Singleton getInstance(){ if(null == instance){ synchronized(Singleton.class){ if(null == instance){ instance = new Singleton(); } } } return instance; }}
特点:double check,加锁防并发创建多个对象,当有很多单例对象用这种方式创建时,性能会稍受到影响。第一次需要被使用的时候才会创建对象,一般不会造成无需使用的对象占据内存资源的浪费。
● IODH (Initialization On Demand Holder)
Code example
class Singleton { private Singleton() { } private static class HolderClass { private final static Singleton instance = new Singleton(); } public static Singleton getInstance() { return HolderClass.instance; } public static void main(String args[]) { Singleton s1, s2; s1 = Singleton.getInstance(); s2 = Singleton.getInstance(); System.out.println(s1==s2); } }
特点:利用JVM类加载机制,只有真正需要使用到该单例对象,内部类的成员才会被初始化。简单高效安全。推荐使用IoDH方式进行单例对象的创建。
阅读全文
0 0
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式~~~~~~~~~~
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- SAP-MM 价格条件详解-02条件记录的存取逻辑解析
- clock()函数调用模版
- 较完整的H5数据库封装---只需要key-value的存取方式
- 动态规划K
- css行内样式的属性设置,css的外部样式的设置
- 设计模式
- leetcode 453. Minimum Moves to Equal Array Elements(C语言,又是一招出奇制胜)46
- 1701H210.27 王建瑜 连续第四天
- JVM调优之简介
- Ubuntu ROS安装及测试
- 使用unity画圆
- HDOJ 2117 Just a Numble
- 关于web项目run模式启动和debug模式启动的一些区别
- 史上最全的iOS各种设备信息获取总结(iPhone8/iPhone X 已更新)