单例模式

1.定义#

确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式是通过私有化构造函数实现的,私有化构造函数的类不能通过关键字new来创建,但是可以通过clone和反射机制创建。

2.类图#

单例类图

3.实现#

3.1单例类##

public class Singleton
{
  private static final Singleton singleton = new Singleton();
  //因为需要考虑高并发下的同步问题,所以在类初始化时生成该对象。
  private Singleton(){
    //私有化构造函数
  }
  
  public static Singleton getSingleton(){
    return singleton();
    //获得单例对象
  }
  
  public static void echo(){
    //具体的业务逻辑
  }
}

4.单例类使用场景#

整个项目中需要一个共享访问点或共享数据;
创建一个对象需要消耗大量资源;
需要定义大量的静态常量和静态方法的环境。

5.扩展 多例模式#

使用ArrayList记录多过类的静态变量,在static静态代码块初始化。

public class Mutilton{
  private static int max ton = 2;
  private static ArrayList<Mutilton> mutiltonList = new ArrayList<Mutilton>();
  
  static{
    for(int i = 0; i < ton; i++){
      mutiltonList.add(new Mutilton());
    }
  }

  private Mutilton(){};
    
  private Mutilton(String name){};

  public static Mutilton getInstance(int id){
    return mutiltonList.get(id);
  }

  public static void echo(){
    //具体方法
  }; 
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容