Monostate pattern #85
This commit is contained in:
11
monostate/src/main/java/com/iluwatar/monostate/App.java
Normal file
11
monostate/src/main/java/com/iluwatar/monostate/App.java
Normal 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"));
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
10
monostate/src/main/java/com/iluwatar/monostate/Request.java
Normal file
10
monostate/src/main/java/com/iluwatar/monostate/Request.java
Normal file
@ -0,0 +1,10 @@
|
||||
package com.iluwatar.monostate;
|
||||
|
||||
public class Request {
|
||||
public final String value;
|
||||
|
||||
public Request(String value) {
|
||||
super();
|
||||
this.value = value;
|
||||
}
|
||||
}
|
21
monostate/src/main/java/com/iluwatar/monostate/Server.java
Normal file
21
monostate/src/main/java/com/iluwatar/monostate/Server.java
Normal 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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user