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

    技术2022-05-20  31

    一,概述

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

     

    二订单继承订单结构

    上图就是一个订单的继承等级结构,订单最上级是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;

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

     

    四,总结

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

     


    最新回复(0)