Command Design Pattern in Java: Decoupling producer from consumer
interface Command {
void execute();
}
class DomesticEngineer implements Command {
public void execute() {
System.out.println("take out the trash");
}
}
class Politician implements Command {
public void execute() {
System.out.println("take money from the rich, take votes from the poor");
}
}
class Programmer implements Command {
public void execute() {
System.out.println("sell the bugs, charge extra for the fixes");
}
}
public class CommandDemo {
public static List produceRequests() {
List<Command> queue = new ArrayList<>();
queue.add(new DomesticEngineer());
queue.add(new Politician());
queue.add(new Programmer());
return queue;
}
public static void workOffRequests(List queue) {
for (Object command : queue) {
((Command)command).execute();
}
}
public static void main( String[] args ) {
List queue = produceRequests();
workOffRequests(queue);
}
}
Output
take out the trash take money from the rich, take votes from the poor sell the bugs, charge extra for the fixes