重写设计模式-用λ实现单例模式


DCL 单例 用λ表达式来实现

import java.util.Optional;

public class Singleton{
  //1. 构造方法私有化
  //2. 持有自身的静态引用
  //3. 提供获取自身静态引用的公有静态方法

  private Singleton(){}
  private static volatile Singleton singleton;
  public static Singleton getInstance(){
     return Optional.ofNullable(singleton).orElseGet(()->{
       synchronized(Singleton.class){
         return Optional.ofNullable(singleton).orElse(new Singleton());
       }
     });
  }
}

评论
 上一篇
重写设计模式-用λ实现代理模式 重写设计模式-用λ实现代理模式
使用代理模式的目的,往往是因为已经存在某个类和该类的对象,想在该类的部分或全部方法执行前后在执行某些代码。 代理模式分为静态代理和动态代理,动态代理的实现方式又有两种:JDK自带的动态代理,利用了反射的原理,还有一种是...
下一篇 
重写设计模式-用λ实现工厂模式 重写设计模式-用λ实现工厂模式
工厂方法的目的就是生产对象,也就是封装new的过程。只要你把某个对象的new过程封装到某个类或者某个方法中广义上我们都可以叫工厂方法