zoukankan      html  css  js  c++  java
  • 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
            }
        }
    }
  • 相关阅读:
    7.Layout布局(tabs、accordion、layout)
    6.form表单四种提交方式
    5.form表单验证
    4.easyloader.js文件的作用
    3.window窗口
    2.panel面板
    1.messager消息提示框
    2017-10-5-Python
    2017-9-24-Linux移植:ubuntu server 16.04无法联网&无法apt-get update解决
    2017-9-17-EDFA
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14051940.html
Copyright © 2011-2022 走看看