讀Martin Fowler's 《Patterns of Enterprise Application Architecture》有感
作為一本技術指導書,顯然這本書有些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."
最後更新:2017-04-02 22:16:39
上一篇:
終於離開了讓我又愛又恨的外包圈,附贈外包圈趣事及混外包圈秘籍
下一篇:
成員函數不能作為pthread——create的參數
廣度不足,深度不夠
基於阿裏雲數加搭建企業級數據分析平台
《vSphere性能設計:性能密集場景下CPU、內存、存儲及網絡的最佳設計實踐》一3.2.3 使用合適的測量工具
???????????????Elasticsearch????????????2????????????2.2.3????????????????????????-??????-????????????-?????????
矽穀基金為什麼投資iPhone黑客的初創企業
全球經濟寒冬將至?且看頂級資本大鱷的大數據分析
VS 常見快捷鍵有哪些
新秩序下 網絡安全進入新形式
Maven學習八之pom.xml簡介以及客戶端下載包的流程
sicp 3.9題解答