美文网首页
单例模式之饿汉、懒汉

单例模式之饿汉、懒汉

作者: 清阳_ | 来源:发表于2019-04-10 20:39 被阅读0次

一、单件模式用途:

单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用。单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例。

它的用途十分广泛,打个比方,我们开发了一个简单的留言板,用户的每一次留言都要将留言信息写入到数据库中,最直观的方法是没次写入都建立一个数据库的链接。这是个简单的方法,在不考虑并发的时候这也是个不错的选择。但实际上,一个网站是并发的,并且有可能是存在大量并发操作的。如果我们对每次写入都创建一个数据库连接,那么很容易的系统会出现瓶颈,系统的精力将会很多的放在维护链接上而非直接查询操作上。这显然是不可取的。

二、下面对单件模式的懒汉式与饿汉式进行简单介绍:

1、饿汉式:在程序启动或单件模式类被加载的时候,单件模式实例就已经被创建。

2、懒汉式:当程序第一次访问单件模式实例时才进行创建。

三、饿汉模式demo:

public Simple(){

      private  static  Single s=new Single();       

      private Single(){} 

      public  static Simple getSimple(){

              return  s ; 

     }

}   


一般用于枚举法:

enum Single {

    Single;

    private Single() {}

    public  void print(){

        System.out.println("hello world");

    }

}

public  class SingleDemo {

    public  static  void main(String[] args) {

        Single a = Single.Single;

        a.print();

    }


四、懒汉模式 demo:

class Single{

  private  static  Single s =null;

  public Single() {

      if(s ==null)

        s = new   Single();

 return s;

 }

}


懒汉模式在使用时,容易引起不同步问题,所以应该创建同步"锁",demo如下:

class Single1 {

    private  static  Single1 s =null;

    public Single1() {

    }

     //同步函数的demo  public  static  synchronized  Single1 getInstance() {

        if(s ==null)

            s =new Single1();

        return s;

    }

    //同步代码快的demo加锁,安全高效publicstatic Single1 getInStanceBlock(){

        if(s==null)

            synchronized(Single1.class) {

                if(s==null)

                    s =new Single1();

            }

        return s;

    }

}

相关文章

  • java的单例模式

    饿汉单例模式 懒汉单例模式

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • 单例(Singleton)

    单例设计模式 单例模式的创建 饿汉式1 饿汉式2 懒汉式 优化后的懒汉式(线程安全): 饿汉式与懒汉式区别 单例模...

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • Singleton Pattern

    单例分为懒汉模式和饿汉模式: 饿汉模式 ...

  • Java单例模式

    1. 实现单例模式 饿汉模式和懒汉模式单例模式根据实例化时机分为饿汉模式和懒汉模式。饿汉模式,是指不等到单例真正使...

  • Singleton 单例模式

    饿汉式单例模式 饿汉式单例模式 通过静态代码块增加异常处理 懒汉式单例模式 存在线程安全问题 懒汉式单例模式 解决...

  • 设计模式

    一、单例模式 饿汉模式 懒汉模式

  • 2018-05-14

    单利设计模式 懒汉式 单例模式 饿汉式 单利模式 懒汉式与饿汉式的区别: 双重锁式 单例模式 (DCL )

  • 单例模式

    懒汉单例 饿汉模式 总结

网友评论

      本文标题:单例模式之饿汉、懒汉

      本文链接:https://www.haomeiwen.com/subject/khboiqtx.html