设计模式总结
来源:互联网 发布:linux uboot 启动详解 编辑:程序博客网 时间:2024/06/10 02:59
1.单态设计模式(Singleton Design Pattern)
基本概念:一个类只生成一个实例。
应用:譬如对数据库只能有一个连接,或者对网站的连接数的计数器。
形式1:
- public class Singleton {
- private static Singleton instance = new Singleton();
- private Singleton(){}
- public static Singleton getInstance() {
- return instance;
- }
- }
constructor是private,所以如 Singleton s = new Singleton() 不再可行了。只能通过
Singleton s = Singleton.getInstance(); 来获得实例,而这个实例因为是static,全局共享一个,所以无论有多少个Singleton s = Singleton.getInstance(); 得到的实例都是同一个。
形式2:(lazy initialization)
nippet 2同Snippet 1的区别在于:
- public class Singleton {
- private static Singleton instance = null;
- private Singleton(){}
- public static syncronized Singleton getInstance() {
- if(instance == null)
- instance = new Singleton();
- return instance;
- }
- }
Snippet 1在load class阶段就创建对象了;
而Snippet 2只有第一次要实例化的时候才会创建对象。这就是所谓的lazy initialization。
多线程问题:
如果是单线程,没问题,如果是多线程,问题就出现了,因为两个线程可以同时进入if(instance == null) 这个判断语句,所以有可能两个线程创建两个实例。
推荐使用模式12.
- 设计模式 ----- 设计模式总结
- 《访问者设计模式》总结
- 设计模式总结
- 设计模式总结
- 设计模式总结
- 设计模式总结
- 设计模式学习总结
- 设计模式总结
- 设计模式总结
- 设计模式总结
- 设计模式总结2
- DAO 设计模式 总结
- DAO设计模式总结
- 设计模式总结
- java 设计模式总结
- 设计模式学习总结
- java设计模式总结
- 设计模式总结
- 计算机的几种时间格式
- iphone-common-codes-ccteam源代码 CCFileName.h
- 晚绑定场景下对象属性赋值和取值可以不需要PropertyInfo
- 2010个人年终总结
- iphone-common-codes-ccteam源代码 CCFileName.m
- 设计模式总结
- c#params应用
- iphone-common-codes-ccteam源代码 CCFileUtil.h
- USB转串口线的使用方法
- Subversion 错误信息一览表
- jsp 关闭页面时提示
- 了解 Boost Filesystem Library
- Linux下JAVA开发环境的搭建(JDK+Eclipse+Tomcat详细)
- iphone-common-codes-ccteam源代码 CCFileUtil.m