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
Support our free website and own the eBook!
22 design patterns and 8 principles explained in depth
406 well-structured, easy to read, jargon-free pages