命令模式

package org.designPattern.command24;

public class AppleCommand extends Command {

    public AppleCommand(Peddler peddler) {
        super(peddler);
    }

    public void sail() {
        this.getPeddler().sailApple();
    }
    
}

package org.designPattern.command24;

public class BananaCommand extends Command{

    public BananaCommand(Peddler peddler) {
        super(peddler);
    }

    public void sail() {
        this.getPeddler().sailBanana();
    }

}

package org.designPattern.command24;

public class BananaCommand extends Command{

    public BananaCommand(Peddler peddler) {
        super(peddler);
    }

    public void sail() {
        this.getPeddler().sailBanana();
    }

}
package org.designPattern.command24;

public class MainClass {
    public static void main(String[] args) {
        Peddler peddler = new Peddler();
//        peddler.sailApple();
//        peddler.sailBanana();
        
        Command appleCommand = new AppleCommand(peddler);
        Command bananaCommand = new BananaCommand(peddler);
//        appleCommand.sail();
//        bananaCommand.sail();
        Waiter waiter = new Waiter();
        
        //下订单
        waiter.setOrder(appleCommand);
        waiter.setOrder(bananaCommand);
        
        //移除订单某项
        waiter.removeOrder(appleCommand);
        
        waiter.sail();
    }
}

package org.designPattern.command24;

/*
 * 小商贩
 */
public class Peddler {
    
    //卖苹果
    public void sailApple() {
        System.out.println("卖苹果");
    }
    
    //卖香蕉
    public void sailBanana() {
        System.out.println("卖香蕉");
    }
    
}

package org.designPattern.command24;

import java.util.ArrayList;
import java.util.List;

public class Waiter {
    private List<Command> commands = new ArrayList<Command>();


    public void setOrder(Command command) {
        commands.add(command);
    }

    public void removeOrder(Command command) {
        commands.remove(command);
    }
    
    public void sail() {
        for(Command command : commands) {
            command.sail();
        }
    }
}


你可能感兴趣的:(命令模式)