單例模式淺理解

//single 實例 一次只能有一個打印任務,但是卻有n臺打印機,我們隨機的安排打印機
 class LoadBalancer
 {
  private Random rd=new Random();
  private static LoadBalancer ld=null;
  ArrayList<String> serverLs=new ArrayList<String>();
  protected LoadBalancer()
  {
   serverLs.add("server1");
   serverLs.add("server2");
   serverLs.add("server3");
   serverLs.add("server4");
  }
  public static synchronized LoadBalancer getInstance()
  {
   if(ld==null)
   {
    ld=new LoadBalancer();
   }
   return ld;
  }
 
  public String getServer()
  {
  int i= rd.nextInt(serverLs.size());
  return serverLs.get(i).toString();
  }

 }

我們的測試類:

public class MotherTest {
 

 public static void main(String[] args)
 {
  MotherTest mt=new
    MotherTest();
  mt.TestSin3();
 }

 

 public void TestSin3()
   {
    LoadBalancer l1= LoadBalancer.getInstance();
    LoadBalancer l2= LoadBalancer.getInstance();
    LoadBalancer l3= LoadBalancer.getInstance();
    LoadBalancer l4= LoadBalancer.getInstance();
    if((l1==l2)&& (l2==l3)&& (l3==l4)&&(l4==l1))
    {
     System.out.println("ok");
    }
    System.out.println(l1.getServer());
    System.out.println(l2.getServer());
    System.out.println(l3.getServer());
    System.out.println(l4.getServer());
   }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章