【发布时间】:2009-11-16 23:19:00
【问题描述】:
我有一个 SalesOrder 类,它被几种不同类型的销售订单继承。它有一个名为 ValidateItems(OrderItemList, itemAdditionalValidation) 的方法,该方法接收一个订单项目列表和一个用于对订单项目进行额外验证的委托。不同的销售订单各自定义自己的委托版本,然后在调用父 SalesOrder 类的 ValidateItems 时将其传入。委托接受一个 OrderItem 对象。 OrderItem 类有一个 Validate() 方法。 ValidateItems 方法遍历列表并对每个 OrderItem 调用 Validate,然后调用 itemAdditionalValidation 委托并将其传递给 OrderItem。
到目前为止,当我想验证商品时,我总是会创建将所有商品添加到相应订单中,然后订单会调用 ValidateItems 并处理所有验证。但是,现在我希望能够直接调用 OrderItem.Validate 而不创建订单,但是我不知道如何重构委托。基本上,我希望 OrderItem 能够根据它正在处理的 Order 类型知道要调用哪些委托。有任何想法吗?此外,任何关于如何改进我当前架构的提示都将不胜感激。
【问题讨论】:
标签: oop refactoring