zoukankan      html  css  js  c++  java
  • 看旧代码复习知识DAY1

    DAO层

    负责与数据库打交道的一系列代码。

    数据库就是拿来存数据的,通常数据库中的一个数据表对应一个DAO层的对象,该对象的类的命名规则为XxxDAO或者XxxMapper等。DAO对象向上提供对数据表项的增删查改接口,例如(持久化)保存一个对象、删除一个对象、查找一个对象、查找一组对象、更新一个对象等。方便起见,又有一系列的entity类,放在entity包中(DAO类对象放在dao包中),entity对象活在内存里,通常和数据表项一一对应。

    着手写代码的顺序通常是:设计数据表>然后实现DAO层>测试DAO层。

    DDD

    Domain-Driven Design领域驱动设计,简称DDD。从头到尾就没懂。。。。。

    暂时的理解:

    DDD就是真·面向对象设计。所谓设计领域模型就是进行面向对象设计。

    我始终记得think in java里面的两句话“问题的复杂度取决于抽象的质量”、”面向对象设计的技巧在于——将对象视为服务的提供者“,我在写”面向对象代码“的时候基本上是在想这两句话。因此,基于上述不知对错的理解,我认为DDD的缺点在于,一个系统在每个人脑子里抽象出来可能是不一样的,并且,每个人对业务的熟悉程度不同,抽象质量也不同。所以一个人的抽象另外一个人未必能看懂,不利于分工合作(每个人脑子里的系统不容易一致)。而且针对特定业务可能有很多不同的抽象,往往是没有定论的,斟酌来斟酌去可能还是贫血模型简单(几乎是一套固定的模板)。

    实践上,我们普遍用的贫血模型就是”数据表驱动开发“,贫血模型里面可以有单纯的没有任何业务的数据对象、也有不带数据的单纯的业务对象。例如User这样子的纯数据对象,就是有name、age等字段,然后只有set和get方法。着手写代码的顺序通常是:设计数据表>然后实现DAO层>测试DAO层。

    而DDD步骤则是:先设计好领域模型>再设计数据库。一个领域模型可能对应N张表,例如说商品模型的销量 

    可能分散在交易成功记录里未必是商品表计数。

    总之,贫血模型为主,DDD为辅。

    贫血设计 VS. 充血设计

    摘自:https://www.zhihu.com/question/20360521/answer/14891150

    举个简单的J2EE的例子,设计一个与用户(User)相关的功能,传统的设计一般是:

    类:User+UserManager
    
    保存用户调用:userManager.save(User user);

    充血的设计则可能会是:

    类:User
    
    保存用户调用:user.save();
    
    ——User有一个行为是:保存它自己

    RESTful API

    一句话概括就是:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作

    参考资料:

  • 相关阅读:
    阿里SRE体系如何支撑24小时峰值压力、220+个国家“剁手党”?
    《算法技术手册》一2.4.4 线性算法的性能
    8月7日云栖精选夜读:五分钟读懂SIGIR 2017前沿技术研究成果
    作业9 DFA最小化,语法分析初步
    作业8 非确定的自动机NFA确定化为DFA
    作业7 正规式、正规文法与自动机
    作业6 正规文法与正规式
    作业5 词法分析程序的设计与实现
    作业4 文法和语言总结与梳理
    作业3 语法树,短语,直接短语,句柄
  • 原文地址:https://www.cnblogs.com/xkxf/p/14330937.html
Copyright © 2011-2022 走看看