JAVA 设计模式 - 图1

单例模式

所谓的单例设计指的是一个类只允许产生一个实例化对象。
最好理解的一种设计模式,分为懒汉式和饿汉式。

饿汉式

构造方法私有化,外部无法产生新的实例化对象,只能通过static方法取得实例化对象
饿汉式,从名字上也很好理解,就是“比较勤”,实例在初始化的时候就已经建好了,不管你有没有用到,都先建好了再说。好处是没有线程安全的问题,坏处是浪费内存空间。

  1. class Singleton{
  2. /**
  3. * 在类的内部可以访问私有结构,所以可以在类的内部产生实例化对象
  4. */
  5. private static Singleton instance = new Singleton(); //不管有没有用到,先建好再说
  6. private Singleton(){} //声明构造
  7. public static Singleton getInstance(){ //返回对象实例
  8. return instance;
  9. }
  10. public void print(){
  11. System.out.println("Hello Singleton...");
  12. }
  13. }

懒汉式

当第一次去使用Singleton对象的时候才会为其产生实例化对象的操作
懒汉式,顾名思义就是实例在用到的时候才去创建,“比较懒”,用的时候才去检查有没有实例,如果有则返回,没有则新建。有线程安全和线程不安全两种写法,区别就是synchronized关键字。

class Singleton{
    /**
     *声明变量
     */
    private static Singleton instance;        //先声明

    private Singleton(){};    //私有构造方法

    public static Singleton getInstance(){
        if(instance == null){
            instance = new instance();
        }
        return instance;
    }
}