Singleton单例模式
来源:互联网 发布:u盘安装linux卡在scsi 编辑:程序博客网 时间:2024/05/17 23:13
什么是单例模式?
概念
单例模式是一种常见的设计模式,可以使得某个类只有一个实例,自己创建该类实例并向外界提供该实例。
单例的三要素:
- 构造方法私有化,类的内部创建对象
- 静态属性
- 静态方法
单例模式优缺点
优点
- 数据共享
- 项目安全(配合同步实现)
缺点
- 并发性降低
- 增加耦合
为什么使用单例模式?
在某些条件下,使用单例模式可以控制类实例的数量,达到节约资源的目的,同时由于只有一个实例,可以实现通信的功能以及资源共享,不仅如此,单例模式配合线程的同步可解决并发访问中的安全问题。
在一些优先考虑安全性的程序中可以尝试使用单例。
例如:在一个银行系统中,如果不加限制,一个账户可以在多个端口同时对账户内的金额进行操作,这种情况是绝对不允许发生的。
所以当用户拿到一个money的单例对象(实现了线程同步),才能对账户中的金额进行操作,这样问题便解决了。
单例模式的缺点是非常明显的,降低程序的并发性,增加模块之间的耦合,所以单例的使用需要谨慎。
如何使用单例
实现单例模式的方式有很多种,常见的有饥汉模式和饱汉模式
饥汉模式
特点
- 加载类时就创建对象
- 创建对象后无法释放
实现
// 饥汉模式class Singleton1 { // 静态属性 private static MoneyBean instance = new MoneyBean(); // 构造方法私有 private Singleton1() { } // 静态方法 public static MoneyBean getInstance() { return instance; }}//实现MoneyBean类的单例模式class MoneyBean { private double balance; public MoneyBean() { } public MoneyBean(double balance) { this.balance = balance; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; }}
饱汉模式(饥汉模式的改进)
特点
- 需要使用时创建对象
实现
// 饱汉模式(饥汉模式的改进)class Singleton2 { // 静态属性 private static MoneyBean instance = null; // 构造方法私有化 private Singleton2() { } // 静态方法 public static synchronized MoneyBean getInstance() { if (instance == null) { instance = new MoneyBean(); return instance; } return instance; }}
阅读全文
1 0
- 单例(Singleton)模式
- singleton 单例模式
- Singleton单例模式
- Singleton(单例)模式
- Singleton 单例模式
- 单例模式(Singleton)
- 单例模式(Singleton)
- Singleton(单例)模式
- Singleton(单例)模式
- 单例模式(Singleton)
- 单例模式(Singleton)
- 单例模式Singleton
- Singleton (单例模式)
- Singleton单例模式
- 单例模式----SingleTon
- 单例模式-singleton
- 单例模式(Singleton)
- Singleton(单例模式)
- java学习之路(5)-运算符
- Android学习之仿QQ讨论组和微信群聊头像
- Codeforces Round #423Div. 2 A-E题解
- 《加密与解密》笔记五(二)
- struts2多文件上传
- Singleton单例模式
- 利用风骚小递归遍历MenuStrip获取TreeView中的TreeNode项
- @Basic
- Java系列
- Java 8 流式处理提高程序响应
- [Tyvj 1728]普通平衡树 5种姿势 (彩蛋)
- A + B Problem II 【java 高精度】
- 3343: 教主的魔法
- 二叉树