美文网首页
命令模式

命令模式

作者: keith666 | 来源:发表于2016-05-19 23:05 被阅读10次

    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

    Command by keith
  1. 代码:
  2. 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");
        }
    }
    
    1. Output
    Steak is preparing
    Steak is cooking
    Steak is finishing
    Salad is preparing
    Salad is cooking
    Salad is finishing
    

    Refenrence

    1. Design Patterns
    2. 设计模式

    相关文章

      网友评论

          本文标题:命令模式

          本文链接:https://www.haomeiwen.com/subject/gvggrttx.html