增加抽象工厂和命令调度模式