命令者模式

该模式属于行为型模式,行为被包装在对象里面。
复制代码
//命令者
public interface Action {
    public void perform();
}



//真正的执行任务的  命令接受者
public interface CommandAccepter {
    public void save();
    public void open();
    public void close();
}
复制代码
// 命令发起者
public class Macro {
    private final List<Action> actions;

    public Macro(){
        actions = new ArrayList<>();
    }
    public void record(Action action){
        actions.add(action);
    }
    //定义命令宏
    public void run(){
        actions.forEach(Action::perform);
    }
}

复制代码
// 具体的命令实现类,在java8中可以简化的部分
public class Open implements Action {
    private final CommandAccepter editor;
    public Open(CommandAccepter editor){
        this.editor=editor;
    }
    @Override
    public void perform(){
        editor.open();
    }
}
复制代码

public class Demo {
    public static void main(String[] args) {
        Macro m=new Macro();
        CommandAccepter accepter = null;

        //old way 需要有一个Open命令对象实现Action接口;
        m.record(new Open(accepter));
        //lambda way
        //不需要新建一个Close 命令实现。
        m.record(()->accepter.close());
    }
}
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值