读Martin Fowler's 《Patterns of Enterprise Application Architecture》有感

简介: 作为一本技术指导书,显然这本书有些outdated了,但想想现在的一些框架,架构正是基于这本书的思想构建的,还是不免对作者当时的Vision感到钦佩。出于对这些思想本源的追索,以及对历史的追溯。还是很有必要浏览这本经典著作的,对于这个500页的书,我看的比较快,只是跳一些感兴趣的点着重看下,事实证明还是很有收获的。 POJO 起源:J2EE才出现时,尽管EJB2.0 特别

作为一本技术指导书,显然这本书有些outdated了,但想想现在的一些框架,架构正是基于这本书的思想构建的,还是不免对作者当时的Vision感到钦佩。出于对这些思想本源的追索,以及对历史的追溯。还是很有必要浏览这本经典著作的,对于这个500页的书,我看的比较快,只是跳一些感兴趣的点着重看下,事实证明还是很有收获的。


POJO

  • 起源:J2EE才出现时,尽管EJB2.0 特别是它的Entity Bean 给开发和调试带来了很多不便,但是在vendor的怂恿和对新技术的盲从下,很多公司还是采用了这个后来被证明是worst practice的技术。(记得当时我第一家公司就是用了CMB)作者认为人们忽略原来标准的java object 而去用这些container-based object 是因为这些regular java object没有个好听的名字,所以在准备2000 java one大会的时候,Rebecca, Josh and Martin give them one: POJO (plain old Java objects)

  • 收获:我开始以为POJO就是贫血的Domain Object,里面只有fields and setter, getter。 而现在知道POJO是针对那些依赖框架的Java Objects而言的,不依赖任何框架的Java Object 就是POJO,依赖框架的坏处是调试和测试都很麻烦,像EJB2.0,Struts1等。

  • 演变:现在的主流架构应该都支持POJO了,也就是实现类不需要依赖框架的Object了,例如EJB3.0, Struts2等

DTO

  • 起源:作为Remote Call往往需要比较大的overhead,所以一个基本原则就是尽量减少remote call,这就需要我们暴露给client的interface最好是coarse-grained(粗粒度的),一个用来在不同App之间传输Data的Object DTO(Data Transfer Object) 应运而生了。

  • 收获:开始以为DTO就是简单对DO进行1对1的wrap,所以很不理解这样做得必要性。其实DTO并不是对DO的1对1包装,而是一个DTO aggregates 多个DO的信息,这样client 就能在一次Call中得到足够的信息。
    引用原文的话:“If a remote object requests data about an order object, the returned Data Transfer Object will contain data from the order, the customer, the line items,the products on the line items, the delivery information- all sorts of stuff."



目录
相关文章
|
4月前
|
算法 安全 编译器
【C++20 新特性Concepts 概念】C++20 Concepts: Unleashing the Power of Template Programming
【C++20 新特性Concepts 概念】C++20 Concepts: Unleashing the Power of Template Programming
201 0
|
Java API Spring
读书笔记系列 - Operating Systems: Three Easy Pieces - Virtualization - Chapter 4: Processes
读书笔记系列 - Operating Systems: Three Easy Pieces - Virtualization - Chapter 4: Processes
89 0
读书笔记系列 - Operating Systems: Three Easy Pieces - Virtualization - Chapter 4: Processes
|
安全 Unix Shell
读书笔记系列 - Operating Systems: Three Easy Pieces - Virtualization - Chapter 5: Process API
读书笔记系列 - Operating Systems: Three Easy Pieces - Virtualization - Chapter 5: Process API
83 0
|
开发工具
最简单的 SAP Cloud Application programming CDS 练习
最简单的 SAP Cloud Application programming CDS 练习
112 0
最简单的 SAP Cloud Application programming CDS 练习
|
Oracle 关系型数据库 MySQL
Website Cloud Architecture Best Practices
Most corporate users can customize their technical architecture according to individual business needs, achieving a Web-scale IT system design.
2892 0
Website Cloud Architecture Best Practices
|
架构师 设计模式 测试技术
谈谈我理解的SA——Systems Architecture
什么是SA? SA即Systems Architecture,是系统体系结构。 系统体系结构是定义系统的结构、行为和系统视图的概念模型。架构师将其系统的形式化描述或表示出来,以支持结构和行为的推理的方式组织。
2551 0
|
XML JSON 数据格式
编码与模式------《Designing Data-Intensive Applications》读书笔记5
进入到第四章了,本篇主要聊的点是编码(也就是序列化)与代码升级的一些场景,来梳理存储之中涉及到的编解码的流程。目前主流的编解码便是来自Apache的Avro,来自Facebook的Thrift与Google的Protocolbuf,在本篇之中,我们也会一一梳理各种编码的优点与痛点。
1304 0