一、为何需要单件模式

  1. 需求

    我们开发了一个大型的项目,其中存在许多的工具类。但是其中很多的工具类我们并不是经常使用得到,甚至

    一次都不会使用。但是这些工具类都是静态的类,会消耗很多的内存,即使一次都不使用。这个时候我们需要一种

    方式可以解决这个问题。意指只有我们使用到这个工具类的时候才实例化,并且在以后的使用中总是返回首次实例

    化的对象而不是重复的实例化新的对象。

  2.  
  3. 方案

    我们采取的方案是将类默认的构造方法设置为保护类型,这样使用者就无法直接实例化这个类,然后我们在公开一

    个静态的方法,用于将本身返回给使用者。其中涉及判断当前的类是否已经被实例化的逻辑代码,如果当前的类已

    经被实例化,则直接返回自身。否则实例化自身并保存进一个私有的静态变量中,以便以后使用的时候返回对象。

  4.  
  5. 设计

    下面是该类的大概轮廓:

     1 public class SingletonPattern
     2 {
     3     private static SingletonPattern _self;
     4 
     5     protected SingletonPattern()
     6     {
     7     }
     8 
     9     public static SingletonPattern GetInstance()
    10     {
    11         if (_self == null)
    12         {
    13             _self = new SingletonPattern();
    14         }
    15         return _self;
    16     }
    17 }
    View Code

相关文章: