单例设计模式

今天学习了一下单例设计模式,什么是单例设计模式呢?就和古代时候只能有一个皇帝一样,有些时候我们会要求某个类只能有一个对象实例,例如工具类。那么如何实现呢?

正常的一个类定义如下:
  1. class SingleTon{
  2. }
在构造对象实例的时候我们使用new SingleTon(),那么这样就可以构建多个对象实例,为了不让用户可以任意的构建对象,这里我们把类的默认构造函数重写一下并声明为private,问题又来了,这样做的话会导致一个对象也new不了。为了解决这个问题,可以在类的内部new一个类对象,这就产生了单例设计模式的两种方法,“饿汉式”和“懒汉式”。

“饿汉式”SingleTon类定义如下:
  1. class SingleTon1{
  2. private SingleTon1(){
  3. }
  4. public static SingleTon instance = new SingleTon1();
  5. }
"懒汉式":
  1. class SingleTon2{
  2. private SingleTon2(){
  3. }
  4. private static SingleTon2 instance;
  5. public static SingleTon2 getInstance() {
  6. if (instance == null) {
  7. instance = new SingleTon2();
  8. }
  9. return instance;
  10. }
  11. }
饿汉式和懒汉式的区别在于什么时候实例化instance对象,饿汉式在类加载的时候就实例化了instance对象,而懒汉式只有在第一次调用getInstance函数是才实例化instance对象,所以饿汉式在类加载的时候比较慢而在外面使用instance的时候比较快,相反,懒汉式则在类加载的时候比较快而在第一次使用getInstance的时候比较慢。




posted @ 2014-11-12 18:12  starlitnext  阅读(166)  评论(0编辑  收藏  举报