Monostate pattern #85

This commit is contained in:
amit2103
2015-10-04 03:06:11 +05:30
parent 9eb64bc0e5
commit c8fd9f3a0d
8 changed files with 180 additions and 0 deletions

View File

@ -0,0 +1,11 @@
package com.iluwatar.monostate;
public class App {
public static void main(String[] args) {
LoadBalancer loadBalancer1 = new LoadBalancer();
LoadBalancer loadBalancer2 = new LoadBalancer();
loadBalancer1.serverequest(new Request("Hello"));
loadBalancer2.serverequest(new Request("Hello World"));
}
}

View File

@ -0,0 +1,39 @@
package com.iluwatar.monostate;
import java.util.ArrayList;
import java.util.List;
public class LoadBalancer {
private static List<Server> servers = new ArrayList<>();
private static int id = 0;
private static int lastServedId = 0;
static {
servers.add(new Server("localhost", 8081, ++id));
servers.add(new Server("localhost", 8080, ++id));
servers.add(new Server("localhost", 8082, ++id));
servers.add(new Server("localhost", 8083, ++id));
servers.add(new Server("localhost", 8084, ++id));
}
public final void addServer(Server server) {
synchronized (servers) {
servers.add(server);
}
}
public final int getNoOfServers() {
return servers.size();
}
public void serverequest(Request request) {
if (lastServedId >= servers.size()) {
lastServedId = 0;
}
Server server = servers.get(lastServedId++);
server.serve(request);
}
}

View File

@ -0,0 +1,10 @@
package com.iluwatar.monostate;
public class Request {
public final String value;
public Request(String value) {
super();
this.value = value;
}
}

View File

@ -0,0 +1,21 @@
package com.iluwatar.monostate;
public class Server {
public final String host;
public final int port;
public final int id;
public Server(String host, int port, int id) {
this.host = host;
this.port = port;
this.id = id;
}
public String getHost() {
return host;
}
public int getPort() {
return port;
}
public final void serve(Request request) {
System.out.println("Server ID "+id + " processed request with value "+request.value);
}
}