看完大话设计模式后,个人总结 命令模式的出发点就是: 在类a中func_a1函数中,写了调用类b中func_b1 和func_2等几个方法的几条语句。然后出现需求,需要对调用类b方法的几个调用过程 进行排序 或者进行组合,或者撤回等操作, 最简单的操作 就是重写func_a中的方法,满足需求。同样的,其他对调用操作的控制需求 ,都会要去修改这个func_a,所以这样就违背了设计模式的 开放封闭的原则。并且代码量大的时候 并不方便拓展。
解决方法:
类b不变;
新建一个类 order基类, 并且派生出具体的子类, 每个子类分别调用类b的func_x方法实现命令。 这样子就吧order类抽象出来了;
新建一个类orderManager类, 专门用来对order类进行管理和控制, 以后的什么排序啊 测绘等控制需求 都可以写在这里面。
类a的func_a1 方法修改, 根据需生成对应的order类对象, 并实例化一个ordermanager类实例,将他们组装好。 然后调用 直接调用ordermanger类的方法进行命令的调用!