State Pattern 状态模式和Dao的耦合困惑
如图,订单状态有New Order,Registered,Granted,Shipped,Invoiced,Cancelled,相当复杂,在不同的状态执行操作时会产生不同的影响,比如说我们要执行AddOrderLine的话,要判断订单状态,如果是Registered或Granted状态的话,订单状态会变成New Order,如果是New Order状态的话,则状态保持不变,如果是其它状态的话,则不允许AddOrderLine操作。
运用状态模式之后,
但是问题来了,例如Granted状态在执行ship()操作之后变成Shipped状态,但是ship()操作涉及到减少库存,写出库记录等等内容,这样GrantedState就要依赖于 库存Dao 了,这样会产生一个Entity 依赖高层的Dao的问题了。
请问大家应该怎么解决?
public class GrantedState extends OrderState
{
ship(){
InventoryDao.reduceInventory(Order);
}
}