围绕业务订单进行的可扩展后台设计

原创 2016年09月21日 22:52:44

围绕业务订单进行的可扩展后台设计

在互联网行业中,业务往往变化迅速,对于后台开发者来说,如何编写结构分明,逻辑清晰,能够进行快速扩展的代码是很重要的。
这里针对大多数系统都有的订单流转逻辑进行设计模式探索

业务订单的特点:

  • 业务处理多
    对于一个订单的处理,往往涉及到商户,余额,供应商,区域,黑白名单,商品库存等一系列逻辑。

  • 业务变化快
    随着业务量的上升,原来可能是做不了的业务,现在也能开放了;原来是定义为失败的订单现在又能在后台进行重试等等。

  • 业务可扩展
    原来订单只要处理完成就可以了,现在可能需要在订单处理之前对商户ip进行黑白名单鉴权;针对特殊业务可能需要特殊处理。

针对上面这些问题这里给出的解决方案是采用责任链的设计模式进行后台架构。

public interface Handler<REQ, RESP> {
    RESP handle(REQ req);
}
public abstract class AbstractHandler<REQ, RESP> implements Handler<REQ, RESP> {
    protected Handler<REQ, RESP> next;
    protected abstract RESP doHandle(REQ req);
    @Override
    public RESP handle(REQ req) {
        RESP resp = this.doHandle(req);
        if (null == resp)
            return resp;
        if (null != next ) 
            return next.handle(req);
        return resp;
    }

    public Handler<REQ, RESP> getNext() {
        return next;
    }

    public void setNext(Handler<REQ, RESP> next) {
        this.next = next;
    }
}

对于具体业务的处理者只需要继承该抽象处理器,并指定next处理器就可以将处理结果传递给next处理器。
从而完成整个订单处理。每一个具体的处理器只需要关心自己应该完成的任务,从而对业务过程进行了分解,而且整个逻辑也更清晰。当需要对业务处理扩展时,只需要单独添加具体的处理器,而不需要对其他处理器的逻辑进行修改,减少的冗余,耦合。

分享一个近期工作中订单功能模块重构设计图(修改后对比图)

点击以下 http://img.blog.csdn.net/20140725154921799?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VueW...

分享一个近期工作中订单功能模块重构设计图

说明: 1、IOrder:斜体字表示抽象类接口 2、+handleProdInst():List:斜体字表抽象方法;+createPubReq():表示类方法 3、圆圈表接口、三角箭头表示继承或...

静态工厂方法的优缺点分析

静态工厂方法的优缺点 本文参考Effective Java的观点,简单罗列下静态工厂方法的在创建对象时的优缺点。 先看一个Boolean(基本类型boolean的包装类)的简单示例 publ...

京东虚拟业务多维订单系统架构设计

当年白居易初到长安,拜见大儒顾况,老先生见名曰“长安米贵,居大不易”,当读到白居易所诗“野火烧不尽,春风吹又生”时不禁赞叹“有句如此,居天下有甚难”。   京米平台隶属虚拟平台下基础平台组研发的公...

Android 支付宝支付、微信支付、银联支付 整合第三方支付接入方法(后台订单支付API设计)

客户端获取后台支付API请求参数的设计 参数名 类型 描述 method int 支付方式,参见支付方式参数说明 platform int 支付平台,参见支付平台参数...

使用Freemarker宏进行可扩展式模块化编程

今天的文章聊一下freemarker的一些特性:宏,我们将使用它写出一些模块化,可扩展的页面代码,这样的复用并且可扩展的代码风格正是我一直所追求的优雅。...

设计一个可扩展的用户登录系统 (2)

转自 廖雪峰老师 在设计一个可扩展的用户登录系统 (1)中,我们设计了可扩展的数据库表的结构,基本思想是: Users表只存储User的Profile信息,没有任何认证信息(例如,不存Passwo...

设计一个可扩展的用户登录系统

在Web系统中,用户登录是最基本的功能。要实现用户名+密码登录,很多同学的第一想法就是直接创建一个Users表,包含username和password两列,这样,就可以实现登录了:id | usern...

8个常用于可扩展系统的设计模式

1,负载均衡 – 把一个请求按一定hash算法或规则分配到服务器组中的一台去处理,以分担单个服务器的压力。这一般多见于大型网站的构架。2,分头收集(Scatter and Gather) –  把一个...
  • Matol
  • Matol
  • 2011年03月14日 10:27
  • 647
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:围绕业务订单进行的可扩展后台设计
举报原因:
原因补充:

(最多只允许输入30个字)