意图:希望对象只有一个实例,但没有控制对象实现代的全局对象。还希望确保所有实体使用该对象相同的实例,而无需将引用传给它们。
问题:几个不同的客户对象需要引用同一个对象,而且希望确保这种类型的对象数目不超过一个。
解决方案:保证一个实例。
参与者与协作者:Client对象只能通过getInstance方法创建Singleton实例。
效果:Client对象无需操心是否存在Singleton实例。这是由Singleton自己控制的。
实现:
1. 添加一个类的私有的静态成员变量,引用所需的对象(初值为null)。
2. 添加一个公共静态方法,它在成员变量为null时实例化这个类(并设置成员变量的值),然后返回该成员变量的值。
3. 将构造函数的状态设置为保护或私有,从而防止任何人直接实例化这个类,绕过静态构造函数机制。
Feed: