本例是懒汉模式
负载均衡器类
import java.util.ArrayList;
import java.util.Random;
class LoadBalancer { /**这里权限不写,默认,就是包内访问*/
/**懒汉模式*/
private static LoadBalancer lbInstance = null;
/**成员变量,不是静态变量*/
private ArrayList serverList = null;
public LoadBalancer() {
serverList = new ArrayList();
}
public static LoadBalancer getLbInst() {
if (lbInstance == null){
lbInstance = new LoadBalancer();
}else {
return lbInstance;
}
return lbInstance;
}
public void addServer(String server){
serverList.add(server);
}
public void rmServer(String server){
serverList.remove(server);
}
public String getServer(){
Random rd = new Random();
int i = rd.nextInt(serverList.size());
return (String) serverList.get(i);
}
}
用户类
class Client {/**默认权限,包内访问*/
public static void main(String[] args) {
LoadBalancer lb1,lb2,lb3,lb4;
lb1 = LoadBalancer.getLbInst();
lb2 = LoadBalancer.getLbInst();
lb3 = LoadBalancer.getLbInst();
lb4 = LoadBalancer.getLbInst();
if (lb1 == lb2 && lb2 == lb3 && lb3 == lb4){
System.out.println("All them are the same LoadBalancer.");
}
lb1.addServer("Server 1");
lb1.addServer("Server 2");
lb1.addServer("Server 3");
lb1.addServer("Server 4");
for (int i = 0; i < 12; i++) {
String server = lb1.getServer();
System.out.println("Distribute task to: "+ server);
}
}
}