订单和订单明细继承等级结构简单介绍

本文介绍了一种订单管理系统的设计模式,通过定义订单继承等级结构和业务逻辑接口,实现了订单及其明细的有效管理和灵活扩展。该模式遵循面向对象的单一职责原则,提高了系统的可维护性和可扩展性。

一,概述

在现在的管理软件中,一般都会涉及到订单的管理,比如采购订单,采购进货单,销售订单,销售退货订单,库存变动单,采购付款单等等。在这些订单中,都会存在共同的信息。现在就介绍一下一个订单继承等级结构,对订单的业务处理。和对订单明细的库存和业务的处理方法

二订单继承订单结构

上图就是一个订单的继承等级结构,订单最上级是BasicOrder,基本订单下面有分为业务订单(采购单,销售单)和现在流订单(采购付款,其他收入)

1.订单中会涉及到相应的信息,比如金额,客户,优惠等等。

2.对于订单中的业务逻辑的处理,比如对订单中的明细进行编号排序,在保持完订单之后,需要刷新客户余额,或者在保存之前要做一些操作

在订单中,是将这些订单的业务逻辑交个ILogic的接口来处理的

BasicOrder中简单代码如下:

protected ILogic m_logic;

public ILogic getLogic() {
return m_logic;
}

public BasicOrder() {
super();
// 设置订单状态
if (getOrderState() == null) {
setOrderState(BasicOrder.ORDER_NORMAL_STATUS);
}
// 设置logic 对于不同的订单设置为不同的ILogic,比如采购单InboundLogic
m_logic = new BasicLogic(this);

}

3.ILogic继承等级结构

public interface ILogic {


/**
* function called by system before save an order
*
* @param params
* @return
*/
public boolean doBeforeSave(Map params);

/**
* function called by system before trash an order
*
* @param params
* @return
*/
public boolean doBeforeTrash(Map params);

/**
* function called by system after an order added
*
* @param params
* @return
*/
public boolean doAfterAddOrder(Map params);

/**
* function called by system after an order edited
*
* @param params
* @return
*/
public boolean doAfterEditOrder(Map params);

/**
* function called by system after an order saved.
*
* @param params
* @return
*/
public boolean doAfterSave(Map params);

/**
* stop the tracing of an order, such as purchase booking order etc.
*/
public void terminateOrderItems();

/**
* need to be called by before order saved to database. A lot of stuff is
* done here, for example ,find out those deleted order items, adjust order
* item's item number etc.
*
* @param itemsIn,
* need order item list, probably from store table.
*/
public void needCallBeforeSave(List itemsIn);

/**
* deletion list which contains deleted order items.
*
* @return
*/
public List getDeleteList();

/**
* clear deletion list which contains deleted order items.
*/
public void clearDeleteList();

/**
* some order may generate related accounting credence.
*
* @return
*/
public Credence getRelatedCredence();

/**
* get related order, some business order has related cash flow order.
*
* @return
*/
public BasicOrder getRelatedOrder();

/**
* clear up Credence and related order, after order saved.
*/
public void clearUp();

/**
* return payment logic, cash flow order will have it, some business order
* has it because it has related cash flow order.
*
* @return payment logic
*/
public IPaymentLogic getPaymentLogic();

}

上面的接口方法,见名知道意思,就是在保存之前,增加之前,删除之前对订单执行的操作。

以上是ILogic继承等级结构,BasciLogic包含基本的逻辑,CashflowLogic是现在流逻辑,RelateLogic是业务定逻辑.

将订单的逻辑交给ILogic处理,可以达到订单和业务逻辑的托偶,对于以后的修改,复用都用好处

二,订单明细的业务逻辑

1.订单明细一般会保存商品信息,然后加上订单的金额和订单号等信息

2.订单明细继承结构

3.首先BasicOrderItem继承了ProductAttribute(商品的信息)

4.对于订单明细都会涉及到库存,对管理软件了解的人,应该就比较清楚。订单明细把库存的生产同样交给一个借口去处理

// 代理类(代理businessMethod)
protected IOrderItemDelegator m_orderItemDelegator = null;

这样的好处,就不必多言.

四,总结

对于订单和订单明细结构的分析,发现他们都将变化的逻辑交给其他对象处理,只负责单一的责任,这就是面向对象的单一职责原则,这样做的好处是对于以后的扩展和维护都有很大的好处.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值