Object Interaction / Responsibility
Chain of responsibility
// Define a handler interface
interface Handler {
void handleRequest(Request request);
void setNextHandler(Handler nextHandler);
}
// Concrete handler 1
class ConcreteHandler1 implements Handler {
private Handler nextHandler;
@Override
public void handleRequest(Request request) {
if (request.getLevel() <= 10) {
System.out.println("Request handled by ConcreteHandler1");
} else if (nextHandler != null) {
nextHandler.handleRequest(request);
} else {
System.out.println("Request cannot be handled");
}
}
@Override
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
}
// Concrete handler 2
class ConcreteHandler2 implements Handler {
private Handler nextHandler;
@Override
public void handleRequest(Request request) {
if (request.getLevel() > 10 && request.getLevel() <= 20) {
System.out.println("Request handled by ConcreteHandler2");
} else if (nextHandler != null) {
nextHandler.handleRequest(request);
} else {
System.out.println("Request cannot be handled");
}
}
@Override
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
}
// Request class
class Request {
private int level;
public Request(int level) {
this.level = level;
}
public int getLevel() {
return level;
}
}
public class Main {
public static void main(String[] args) {
// Create handlers
Handler handler1 = new ConcreteHandler1();
Handler handler2 = new ConcreteHandler2();
// Set the chain of responsibility
handler1.setNextHandler(handler2);
// Send requests to the chain
handler1.handleRequest(new Request(5));
handler1.handleRequest(new Request(15));
handler1.handleRequest(new Request(25));
}
}
Command
Iterator
Mediator
Memento
Observer
Command
Strategy
Last updated