设计模式总结
2011-12-31 10:17
267 查看
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)
public class Singleton {
private static Singleton instance = null;
private Singleton(){}
public static syncronized Singleton getInstance() {
if(instance == null)
instance = new Singleton();
return instance;
}
}
nippet 2同Snippet 1的区别在于:
Snippet 1在load class阶段就创建对象了;
而Snippet 2只有第一次要实例化的时候才会创建对象。这就是所谓的lazy initialization。
多线程问题:
如果是单线程,没问题,如果是多线程,问题就出现了,因为两个线程可以同时进入if(instance == null) 这个判断语句,所以有可能两个线程创建两个实例。
推荐使用模式1
2.
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)
public class Singleton {
private static Singleton instance = null;
private Singleton(){}
public static syncronized Singleton getInstance() {
if(instance == null)
instance = new Singleton();
return instance;
}
}
nippet 2同Snippet 1的区别在于:
Snippet 1在load class阶段就创建对象了;
而Snippet 2只有第一次要实例化的时候才会创建对象。这就是所谓的lazy initialization。
多线程问题:
如果是单线程,没问题,如果是多线程,问题就出现了,因为两个线程可以同时进入if(instance == null) 这个判断语句,所以有可能两个线程创建两个实例。
推荐使用模式1
2.
相关文章推荐
- PHP 常用设计模式 总结
- php 设计模式 总结 上
- 设计模式总结
- 设计模式总结(《Head First设计模式》学习总结)
- Java基础学习总结(84)——Java面向对象六大原则和设计模式
- 前端学习总结(十四)javascript设计模式
- OFBiz entity engine中的设计模式总结
- 设计模式归纳总结
- [php]php设计模式 (总结)
- [Cocoa]_[初级]_[Cocoa设计模式总结]
- Head First 设计模式[总结]
- php设计模式总结-工厂模式
- 设计模式学习总结(13) 策略模式
- 设计模式学习笔记——结构模式(总结)
- 设计模式之复合模式和总结篇
- Java中23种设计模式总结
- 常用设计模式总结
- 年末技术总结之设计模式 创建型模式
- 设计模式总结
- C#设计模式总结