单例模式

---恢复内容开始---

单例模式

  单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

  单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。

  对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如在Windows中就只能打开一个任务管理器。如果不使用机制对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源;如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真实的状态。因此有时确保系统中某个对象的唯一性即一个类只能有一个实例非常重要。

显然单例模式的要点有三个;
  一是某个类只能有一个实例;
  二是它必须自行创建这个实例;
  三是它必须自行向整个系统提供这个实例。
从具体实现角度来说,就是以下三点:
  一是单例模式的类只提供私有的构造函数,  
  二是类定义中含有一个该类的静态私有对象,
  三是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。
例子:

public class Man {
//私有的静态变量,是唯一的对象;
  private static Man m=new Man();
//私有的构造方法,防止其他类通过new的方式,获得该类对象;
  private Man(){}
//一个公有的,静态的get方法;方便在其他类中访问该方法,获得对象;
  public static Man getMan(){
    return m;
}

}

 
 
 
 

---恢复内容结束---

原文地址:https://www.cnblogs.com/cj28-27/p/5452210.html