scala实现单例模式


设计保证负载均衡服务器的唯一性,主要提供增加服务器,删除服务器,分发的功能
package com.linewell.modeldesgin.singleton

import scala.collection.mutable.ArrayBuffer
import scala.util.Random

/**
* Created by ctao on 2015/8/6.
* 负载均衡器负责进行服务器的增加,删除,分发
*
*/
object  LoadBalance{
    /**
     * 服务器组
     */
   var servers = new ArrayBuffer[String]()

    /**
     * 增加服务器
     * @param server 服务器名
     */
    def addServer(server:String): Unit ={
        println(s"add $server")
        servers += server
    }

    /**
     * 删除服务器
     * @param server 服务器名
     */
    def removeServer(server:String): Unit ={
        println(s"remove $server")
        servers -= server
    }

    /**
     * 随机获取服务器转发
     * @return 服务器名
     */
    def getServer(): String ={
       servers( Random.nextInt(servers.length))
    }
}



package com.linewell.modeldesgin.singleton

/**
* 单例测试客户端
* Created by ctao on 2015/8/6.
*/
object Client extends App {
    //构建负载均衡器1
    val balance1 = LoadBalance
    //构建负载均衡器2
    val balance2 = LoadBalance
    //判断balance1和balance2是否一致
    println(balance1.eq(balance2))
    //添加服务器
    balance1.addServer("Server1")
    balance1.addServer("Server2")
    balance1.addServer("Server3")
    balance1.addServer("Server4")
    //随机获取服务器
    for (i <- 1 to 10) {
        println("get " + balance1.getServer())
    }
    //用balance2移除服务器
    balance2.removeServer("Server1")

    //随机获取服务器
    for (i <- 1 to 10) {
        println("get " + balance1.getServer())
    }
}

猜你喜欢

转载自cjuexuan.iteye.com/blog/2233398