Intent
-
Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.
- Promote "invocation of a method on an object" to full object status
- An object-oriented callback
Structure
![](https://img.haomeiwen.com/i1925988/85f82568349e7eba.png)
Command by keith
代码:
public class Command {
public static void main(String[] args){
Customer customer=new Customer();
Waiter waiter=new Waiter();
customer.takeOrder(waiter,new Lunch("Steak"));
customer.takeOrder(waiter,new Lunch("Salad"));
waiter.orderUp();
}
}
class Customer {
public void takeOrder(Waiter waiter, Order order) {
waiter.addOrder(order);
}
}
class Waiter {
List<Order> orders;
public Waiter() {
orders = new ArrayList<>();
}
public void addOrder(Order order) {
orders.add(order);
}
public void orderUp() {
for (Order order : orders) {
order.prepare();
order.cooking();
order.finishing();
}
orders.clear();
}
}
interface Order {
void prepare();
void cooking();
void finishing();
}
class Lunch implements Order {
private String name;
public Lunch(String name) {
this.name = name;
}
@Override
public void prepare() {
System.out.println(name + " is preparing");
}
@Override
public void cooking() {
System.out.println(name + " is cooking");
}
@Override
public void finishing() {
System.out.println(name + " is finishing");
}
}
- Output
Steak is preparing
Steak is cooking
Steak is finishing
Salad is preparing
Salad is cooking
Salad is finishing
Refenrence
- Design Patterns
- 设计模式
网友评论