`
y806839048
  • 浏览: 1089811 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

实体的封装设计思路

阅读更多

 

思路一:

 

1,请求实体,返回实体统一封装,业务数据放在data,packet字段中,其他是公共字段,有利于数据的统一解析(josn-->实体)

 

状态码用于返回状态

消息用来返回调用信息

业务码用法标记调用业务---利于获取对应的类名,方法名,反射调用---利于代码用设计模式

请求地址

 

 

public class FacadeSendRequest {

 

    private String applyNo;

    private String bankType;

    private String insureChannel;

    private String tradeCode;

    private String packet; //json数据 业务数据

    private String url;  //请求地址

    }

 

    public class FacadeReceiveRequest {

 

    private String bankType;

    private String insureChannel;

    private String tradeCode;

    private String packet; //银行返回的原报文

    private String insureApplyNo; //银行返回的原报文

    }

 

 

    public class ApiResponse implements Serializable {

 

    private static final long serialVersionUID = 1L;

 

    /**

     * 错误码

     */

    private String code = CodeEnum.CODE_0001.getCode();

 

    /**

     * 错误描述信息

     */

    private String msg = CodeEnum.CODE_0001.getMsg();

 

    /**

     * vo 对象

     */

    public Object data;  //业务数据

    }

 

 

2,封装格式的拼接,与data的剥离

 

AbstractFacadeExchange

 

在一个公共的方法中剥离data

 public String callBack(FacadeReceiveRequest facadeReceiveRequest)throws Exception{

        String result=null;

        try {

            String jsonString = JSONObject.toJSONString(facadeReceiveRequest);

            String url = apiUrl;    //默认回调地址

            if(NotifyMethodConstant.INSURE_NOTIFY.equals(facadeReceiveRequest.getTradeCode())){ //投保回调

                url = apiInsureUrl;

            }

            result=HttpClientUtil.httpJsonPost(url, jsonString);

            if (StringUtils.isNotBlank(result)){

                JSONObject jsonObject = JSONObject.parseObject(result);

                if (CodeEnum.CODE_0000.getCode().equals(jsonObject.get("code"))){

                    result=jsonObject.getString("data");

                }

            }

        } catch (Exception e){

            LOGGER.error("请求内部网关异常",e);

        }

        return result;

    }

 

 

返回数据的拼接:

 

BankCallbackController

@RequestMapping("callback/insure")

    @ResponseBody

    public ApiResponse insureCallback(@Valid @RequestBody FacadeReceiveRequest facadeReceiveRequest, Errors errors) throws Exception {

        //验证参数

        checkError(errors);

        //业务逻辑

        ApiResponse apiResponse = new ApiResponse();

        try {

 

            String result = insureCallBackService.callback(facadeReceiveRequest);

 

            apiResponse.success();

            apiResponse.setData(result);

        } catch (Exception e) {

            HMonitor.add("bank.callback:exception");

            LOGGER.error("银行回调处理异常,参数[{}]", facadeReceiveRequest.toString(), e);

            apiResponse.error();

        }

        return apiResponse;

    }

 

 思路二:

 当然实体的封装也有另一种思路就是一个抽象父类(公共字段),后面的业务字段类(业务字段)继承抽象父类----这种设计没有上面设计的简单

分享到:
评论

相关推荐

    mybatis实体类生成工具

    易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 实用: 提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了dao框架,可以使我们更容易的开发和配置我们的dal...

    CommonAdapter-通过封装BaseAdapter和RecyclerView.Adapter得到的通用的,简易的Adapter.zip

    设计思路1. Adapter如果用adapter常规写法,你会发现代码量很大,可读性低。如果adapter中有多个类型的Item,我们还得在getView()中写很多if-else语句,很乱。 而现在我让adapter的代码量减少到一个8行的内部类,...

    基于Java的猜拳小游戏设计.doc

    目 录 绪论 - 1- 一、背景与意义 - 2- 二、设计原理与方案 - 2- 一)方案 - 2- 二)设计思路 - 3- 三)系统分析 - 3- 四)程序概要设计 - 4- 五)工作流程图 - 4- 六)程序框图 - 5- 七)程序中所用类说明 - 5- 八)...

    工厂方法模式实现联机考试系统

    抽象工厂Abrstract Factory设计模式的使用思路 1.提供一系列相互依赖对象的创建 2.封装对象的常规创建new方法 3.提供统一调用数据访问方法的方式 4.避免调用数据访问方法和具体对象创建的松耦合

    基于元编程技术的硬件设计模式研究 (2006年)

    将生成器用元程序封装在域实体之中;按照设计模式的作用和具体的变量值生成详细的VHDL代码。应用实例表明,所提模式生成的代码有效性高,设计过程可行性强,可广泛应用于复杂的时钟控制系统的设计领域。

    基于java实现的数据库管理系统.7z

    1.执行过程思路:先根据sql语法把sql字符串切割成各个有效部分,把其相应的封装到运行时实体中, 相当于把.java编译成了.class,再读取dbf文件,执行实体对dbf文件内容进行相应的操作,相当于 类加载执行,实现sql...

    《基于控制台的购书系统(Java)》实验报告

    学会分析“基于控制台的购书系统”程序任务实现的逻辑思路。 能独立完成“基于控制台的购书系统”程序的源代码编写、编译及运行。 理解和掌握面向对象的设计程序。 会用类图进行面向对象设计。 掌握封装的...

    multipleselect:java结合mybatis-plus实现非手写sql多表查询

    通过解析实体,调用通用的XML来实现多表查询,提供一个设计多表查询的思路,复杂SQL封装等目前并不支持。 目前支持: 左join方式,能关联的两张表的实体中关联分区名称必须相同,数据库分区可以不一样可以通@Table...

    asp.net知识库

    在ASP.NET 1.1下实现模板化站点的新思路 在ASP.Net中两种利用CSS实现多界面的方法 用于弹出ModalDialog进行数据选择的控件 使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能...

    二十三种设计模式【PDF版】

    主要是介绍各种格式流行的软件设计模式,对于程序员的进一步提升起推进作用,有时间可以随便翻翻~~ 23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 ...

    亮剑.NET深入体验与实战精要2

    本书既考虑到实际开发中经常遇到的困惑和难题,也分析了解决问题的思路和方法,更总结出项目开发中不可或缺的技术点及思想。读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集...

    亮剑.NET深入体验与实战精要3

    本书既考虑到实际开发中经常遇到的困惑和难题,也分析了解决问题的思路和方法,更总结出项目开发中不可或缺的技术点及思想。读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集...

    语言程序设计课后习题答案

    结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体...

    net学习笔记及其他代码应用

    根据您的知识,请简要谈一下您的思路 答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。 32.给定以下XML文件,完成算法流程图。 <FileSystem> < DriverC > ”MSDOS622”> ” Command....

    JAVA上百实例源码以及开源项目源代码

    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;...

    JAVA上百实例源码以及开源项目

    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;...

Global site tag (gtag.js) - Google Analytics