一、 单例模式:一种常用的软件设计模式。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例
二、 应用:线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例
三、 单例模式特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
四、单利模式的创建
public class Singletn { private String name; private String id; //创建唯一实例 private static Singletn singletn = new Singletn(); //对外提供实例 public static Singletn getInstant() { return singletn; } //构造器私有化 private Singletn() { } public void setName(String name) { this.name = name; } public void setId(String id) { this.id = id; } public String getName() { return name; } public String getId() { return id; } }
public class Singletn { private String name; private String id; //创建唯一实例 private static Singletn singletn; //对外提供实例 public static Singletn getInstant() { if (singletn == null){//双重检查 synchronized (Singletn.class){//多线程时,线程安全问题,加锁实现线程同步 singletn= new Singletn(); } } return singletn; } //构造器私有化 private Singletn() { } public void setName(String name) { this.name = name; } public void setId(String id) { this.id = id; } public String getName() { return name; } public String getId() { return id; } }
饿汉式与懒汉式区别:
1.饿汉式即静态初始化的方式,它是类一加载就实例化的对象,所以要提前占用系统资源
2.懒汉式类似于延迟加载,在使用的时候实例化,多线程中会有线程安全问题,需要双重检查
推荐使用饿汉式。