• Daily Coding Problem: Problem #726


    import java.util.concurrent.atomic.AtomicInteger
    
    /**
     * This problem was asked by Microsoft.
    Implement the singleton pattern with a twist.
    First, instead of storing one instance, store two instances.
    And in every even call of getInstance(), return the first instance and in every odd call of getInstance(), return the second instance.
     * */
    
    /*
    * Rules for making a class Singleton:
    * 1. A private constructor
    * 2. A static reference of its class
    * 3. One static method
    * 4. Globally accessible object reference
    * 5. Consistency across multiple threads
    * */
    
    //in kotlin we need to use the object keyword to use Singleton class
    //饿汉式
    object Singleton {
    }
    
    //懒汉式
    class Singleton_ private constructor() {
        companion object {
            //lazy default is LazyThreadSafetyMode.SYNCHRONIZED
            private val firstInstance: Singleton_ by lazy { Singleton_() }
            private val secondInstance: Singleton_ by lazy { Singleton_() }
            private val counter = AtomicInteger(1)
    
            fun getInstance(): Singleton_ {
                return if (counter.getAndIncrement() % 2 == 0) firstInstance else secondInstance
            }
        }
    }
  • 相关阅读:
    前端面试题(08)
    虚拟的DOM与DOM diff
    前端面试题(07)
    前端面试题(06)
    前端面试题(05)
    前端面试题(04)
    canvas(02绘制图形)
    前端面试题03
    HTB-靶机-Irked
    HTB-靶机-RedCross
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14051940.html
Copyright © 2020-2023  润新知