5.单件模式(Singleton Pattern)
来源:互联网 发布:linux 调用中文输入法 编辑:程序博客网 时间:2024/06/16 09:48
在单件模式一章中,Head Fist一书主要是通过“巧克力工厂”一例去讲解优化代码。
本例粗略介绍:现代化巧克力工厂具备计算机控制的巧克力锅炉。锅炉做的事,就是把巧克力和牛奶融在一起,然后送到下一个阶段,以制造成巧克力棒。若该公司有且仅有一个锅炉,或者说该公司只能运行一个锅炉,那么就需要控制程序只能有一个锅炉实例,另外,在锅炉运行中还要考虑多线程问题。
本例主要需要解决的问题:在这个例子中主要需要解决的是由单例带来的多线程安全问题。
单件模式定义:确保一个类只有一个实例,并提供一个全局访问点。
单件模式的实现:单件模式实现主要有三点:一个私有静态变量、一个私有构造器、一个公有静态实例获取方法。
为了处理多线程安全问题,单件模式主要有两种具体实现方式:通常称其为懒汉式与饿汉式。
饿汉式:为毛称其为饿汉式呢?(个人理解,不代表官方想法)因为他饿,所以他积极。“饿”取得就是积极的意思。积极的去创建实例。它会在类加载时就创建单件实例。
代码如下:
public class Singleton { private static Singleton uniqueInstance = new Singleton();//用static关键字保证在类加载时就初始化对象 private Singleton(){ } public static Singleton getInstance(){ return uniqueInstance; }}
代码如下:
public class Singleton { private static Singleton uniqueInstance; private Singleton() { } public static Singleton getInstance() { if(uniqueInstance == null) { synchronized(Singleton.class) { if(uniqueInstance == null) { uniqueInstance = new Singleton(); } } }
return uniqueInstance; }}
单件模式的应用场景:因为单件模式的作用是确保某个类全局只有一个实例,因此常常被用来管理共享的资源例如:数据库连接池或者线程池。另外还有:缓存、对话框、处理
偏好设置和注册表的对象、日志对象、充当打印机、显卡等设备的驱动程序的对象。
0 0
- 5.单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- 单件模式(Singleton Pattern)
- Androidstudio项目分享到Git@OSC托管的两种方式
- Android ListView封装(代码优化):抽取方法共性,封装 BaseAdapter 和 ViewHolder
- 初涉Rx套餐 之RxBinding(让你的事件流程更清晰)
- ubantu下最强最全Git入门
- 按成绩蛇形分班算法
- 5.单件模式(Singleton Pattern)
- 剑指Offer:二叉搜索树的后序遍历序列
- Codeforces Round #239 (Div. 2) C Triangle(暴力)
- java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver问题解决
- LeetCode - Longest Substring Without Repeating Characters
- iptables中ULOG和NFLOG实现分析
- 一台电脑同时运行多个tomcat
- Oracle 使用scott用户登录提示密码过期
- Servlet之Filter过滤器