一. 目標
模塊化、鬆耦合、緊內聚、提高可維護性和重用性。這些我們聽得最多了,看起來很空,但模式確實做到了。實現主要用到:封裝、分層、AOP
二. 理解
我粗劣看完《J2EE核心模式》第二版,有一些理解。我要用通俗的語言,隨意的文字來描述,即使我成不了專家我也這麼做。隨意寫,不嚴謹,不負責。
爲什麼要使用模式? 答:高端大氣上檔次!具體參照文章頭部
模式怎麼來? 答:模式是總結出來的。 架構師用着用着有了經驗總結出來。
這麼本書分兩個部分第一部分跳過,我們來說說有哪些核心模式。
三. 模式
表現層模式
1. 攔截過濾器
這個好理解,在web.xml裏面不是有個<filter>標籤麼,就可以添加過濾器到過濾器鏈上。在過濾器類上又可以做文章了,繼承,封裝,怎麼方便怎麼寫。
常用是作處理編碼方式,亂碼,哈哈。SpringMVC有個這種過濾器。
實現:AOP
2. 前端控制器
就是加多一層處理分發。側重集中控制,減少視圖業務,提高代碼重用;而攔截過濾器側重預處理後處理。
3. Context 對象
無法理解,ha ha。實現:封裝
4. 應用控制器
跟前端控制一個樣,加多一層。前端控制器之後就到它,它做的東西是操作控制和視圖控制,就是來點實際的。
SpringMVC的conctroller層,strust2 的Action 。 實現:分層。
5. 視圖助手
舉個例子就明白了。JSTL中的 foreach 遍歷。把視圖和邏輯分開。這樣前端做她的事,後臺做他的事。實現:加類庫。
6. 複合視圖
一個大視圖,裏面有幾個視圖,有些是靜態,有些是動態的。能否想到管理系統的上左右的佈局?頭部靜態的,左右導航,右邊內容。
這個容易理解:10個頁面的頭部,你想加個div,你不抽出來,要改10處,你抽出來,改一處。( 請原諒前端人員不是這樣做 )
實現:例如JSP中的 include
7. 服務到工作者
邏輯在後臺處理好,到頁面的時候只管遍歷。怎麼覺得有跟助手有點類似,囧。哦,對了,因爲工作者不一定是頁面,可能是命令。
8. 分配器視圖
SpringMVC的簡單視圖跳轉,或URL直接訪問JSP文件。沒什麼數據要加,直接分發。這也能成模式,果然大師!
業務層代表
1. 業務代表
對系統功能分大塊。在這個類呢,你知道我說的是那個類,它可以處理URL,轉化成某個功能,但它自己不做,叫別人去做。實現:封裝,分層。
2. 服務定位器
不就是一個利用JNDI實現的找源的方法麼。比如找數據源,JDBC,你給出一個名字,我給你一個服務。怎麼着你不關,而且我可以緩存你找過的。實現:封裝
3.會話門面
本質我覺得跟業務代表一個樣,只是名字和內容不一樣。
4.應用服務
服務層,哈哈,這個能理解。service 層,服務內部實現邏輯,供controller調用,而它又調用dao層。
5. 業務對象
POJO , Model .
6. 複合實體
難道是 POJO 引用了 POJO 2 ?
7. 傳輸對象
把要發送的字段封裝成一個對象,本來就是這樣做的,面向對象呀。
8. 傳輸對象組裝器
給傳輸對象一個主管
9. 值列表處理器
分頁。先取出來在後臺緩存,客戶端你拿多少,給多少。
集成層模式
1. 數據訪問對象
封裝操作數據庫方法的層。DataAccessObject,俗稱dao層。
2. 服務激活器
異步調用,好像本來可以異步。你想表達什麼???
3. 業務領域儲存
I am sorry .
4. Web Service 中轉
利用XML或web協議 分發請求到某個服務,god knows.
The end , thank you.