命令模式以及责任链

时间:2012-12-03 00:05:36

标签: design-patterns command-pattern chain-of-responsibility

在我的应用程序中,我需要按照一定的步骤顺序从数据库加载数据,例如加载所有客户,然后加载所有订单并加载产品等。但是,在一两种情况下,订单是不同的,也是需要加载其他数据。

abstract Model
{
   public void load(Configuration config) {
      loadCustomers(config);
      loadOrders(config);
      loadProducts(config);
   }
}

ConcereteModel1 extends Model {
   doesn't overload load
}

ConcreteModel2 extends Model {
   public void load(Configuration config) {
      loadProducts(config);
      loadOrders(config);
      loadCustomers(config);
      loadAdditional(config);
   }
}

我最初的想法是,如果我可以使用Command模式(使用加载命令方法)来实际加载客户,订单或产品,并使用责任链来绑定命令。这是一个好方法,还是我在这里设计工程?

任何示例代码都非常有用。 感谢您的任何建议

2 个答案:

答案 0 :(得分:1)

这听起来是您的任务的正确选择。或者,您需要为数据加载步骤创建基类,并针对特殊情况以不同方式实现它。

这一切都取决于确定你有特殊情况的最简单方法。

有关代码示例,请参阅this description of Chain of Responbsibility

答案 1 :(得分:0)

我认为你必须注意:

您正在使用技术方式(例如命令模式)隐藏域规范(“......但是,在一两个案例中......” )。

我建议开发出第二种解决方案。

相关问题