zoukankan      html  css  js  c++  java
  • 关于领域驱动设计 DDD(Domain-Driven Design)

    以下旨在 理解DDD。

    1. 1.     什么是领域?

    妈妈好是做母婴新零售的产品,应该属于电商平台,那么电商平台就是一个领域。

    同一个领域的系统都有相同的核心业务

    eg: 电商领域都有:商品浏览、购物车、下单、减库存、付款交易等核心环。

    同一个领域要解决的问题 应该是类似的。

     

    1. 2.     什么领域驱动设计DDD?

    DDD是一种基于模型驱动开发的软件开发思想,

    强调领域模型是整个系统的核心,领域模型也是整个系统的核心价值所在。

    每一个领域,都有一个对应的领域模型,领域模型能够很好的帮我们解决复杂的业务问题。

     

    DDD中,我们总是以领域为边界,分析领域中的核心问题(核心关注点),然后设计对应的领域模型,再通过领域模型驱动代码实现。

    而像数据库设计、持久化技术等这些都不是DDD的核心,而是外围的东西

     

    1. 3.     概念总结
    1. 领域就是问题域,有边界,领域中有很多问题;
    2. 任何一个系统要解决的那个大问题都对应一个领域;
    3. 通过建立领域模型来解决领域中的核心问题,模型驱动的思想;
    4. 领域建模的目标针对我们在领域中所关心的问题,即只针对核心关注点,而不是整个领域中的所有问题;
    5. 领域模型在设计时应考虑一定的抽象性、通用性,以及复用价值;
    6. 通过领域模型驱动代码的实现,确保代码让领域模型落地,代码最终能解决问题;
    7. 领域模型是系统的核心,是领域内的业务的直接沉淀,具有非常大的业务价值;
    8. 技术架构设计或数据存储等是在领域模型的外围,帮助领域模型进行落地;

    关于其他:

     熟悉DDD,理解DDD仅仅是个基础,我们需要去 学会 领域建模,领域拆分,,领域细分等,成为该领域的专家。

    参考文章:http://www.cnblogs.com/netfocus/p/5548025.html

     ************

    浅析VO、DTO、DO、PO的概念、区别和用处     ,结合这篇文章,谈谈VO 、DTO的区别

    自己的理解

    VO(View Object): 是需要Controller 层返回给页面的,即返回到ResponseBody 中

    某Controller class 中的方法:

       @RequestMapping("basic")
        @NotAuth
        public Object basicInfo(HttpServletRequest request,HttpServletResponse response,String k){
     
            try {
              
                // 省略...
                Map<String,Object> result = Maps.newHashMap();
           
                result.put("register",register);
                result.put("firstDate",date);
                result.put("max",max);
                result.put("total",total);
                CommonResultVo vo = new CommonResultVo();
                vo.setResult(result);
                return vo;
            } catch (ActsysBizException e) {
                return ErrorResponse.newInstance(-1,"用户未登录");
            }catch (Exception e){
                logger.error("<育儿清单>获取基本信息异常"+StackTraceLogUtil.getStackTraceAsString(e));
                return ErrorResponse.newInstance(-11,"系统异常");
            }
        }    
    

      

    DTO(Data Transfer Object):数据传输对象。DTO代表服务层需要接收的数据和返回的数据,而VO代表展示层需要显示的数据

          (1) 说白了就是Controller 如果调用的对象,即服务的对象是 视图层比如:H5,app移动端,网页,返回的都是DO对象;

          (2) 如果调用的对象是 另一个微服务组件中的某个Servicef方法,比如  活动系统服务于页面,它返回给页面的是一个DO对象,

          而活动系统组成DO对象的时候,需要调用会员系统的某些接口,那么会员系统返回给活动系统的就是DTO对象了

       

                           

  • 相关阅读:
    联合索引和多个单列索引选择
    CentOS6.5 一台服务器同时安装多个Mysql数据库
    一次CentOS的服务器被攻击教训
    java版本的memcache静态化
    mysql存储空间满的处理方式
    MariaDB 10.0 和 MariaDB 10.1 存储过程中 PREPARE FROM EXECUTE 区别
    CentOS6.x 优化脚本
    Mysql 使用 “LOAD DATA INFILE”需要注意的问题
    Mysql 日期类型比较 TIMESTAMPDIFF
    CentOS6.x 源码安装Nginx
  • 原文地址:https://www.cnblogs.com/Profound/p/7458945.html
Copyright © 2011-2022 走看看