在完成了上一章的需求分析后,應該到達的目標是:對系統有一個整體的認識,包括每個功能實現的流程,產生的數據,技術基礎等。
基於以上的認識,就可以開始對該系統進行概要設計。
-
- 首先設計系統的總體架構。
- 然后利用順序圖描述基於該架構下各個類如何協作實現各個待開發的功能。
- 最后整理總結出數據字典。
- 系統總體架構設計
在該系統中,作者采用的系統框架是Struts2,Spring4,Hibernate4和Bootstrap,根據各個框架自身的特點做出以下的系統架構設計:
設計依據:
-
- 展示層
1、Struts2是一個展現層的MVC框架,它解決了jsp頁面代碼與業務邏輯代碼耦合的問題。提供了Filter的機制,對用戶的請求進行攔截,然后分派到對應的Action類中進行處理,最后根據Action類的處理結果返回對應的響應頁面。在該Filter的幫助下頁面的代碼不需要參雜任何的業務邏輯代碼,而Action類中通過調用業務邏輯層提供的接口,則可以實現對請求的處理。
2、因為作者並不擅長前端頁面的開發,所以只能夠采用當前網頁開發中比較流行的前端框架Bootstrap,Bootstrap也提供了比較好的排版以及基本的樣式效果,最后實現的整體效果也還算過得去。
-
- 業務邏輯層
Spring4提供了兩個最重要的組件IoC和AOP,所以Spring最適合設計在業務邏輯層,從數據訪問層獲取數據,為展示層提供業務邏輯的實現,作一個承上啟下的功能。
Spring的IoC容器,簡化了開發人員對類與類之間依賴關系的維護,在利用Spring進行開發的過程中,只需定義需要的接口,而對應的實例化過程則交給IoC容器來進行注入。這實際上也是一種解耦的操作,通過結合Spring和面向接口的編程思想,實際開發出來的代碼十分的簡潔,而且邏輯清晰明確。同時也提高了功能類的代碼復用率。
Spring的AOP,帶來最大的好處就是讓開發人員從繁瑣的事務操作代碼中解放出來,讓開發人員更加專注於業務邏輯代碼的實現。
同時在Spring4和Struts2整合之后,將Action類的生成也交給了IoC容器來管理。
-
- 數據訪問層
Hibernate4是一個ORM框架,能夠將實體類直接映射到數據庫表,在開發中只要定義好實體類之間的關系,數據庫表與表之間的關系也就確立下來了。
同時Hibernate提供了一些基本的數據庫操作,讓開發人員不需要糾結於復雜的SQL。也提供了HQL,將以往面向數據庫表的查詢,改變為面向實體類進行的數據查詢。
-
- Value Object 值對象
貫穿於各層的是值VO值對象,設計的目的,主要是考慮到業務邏輯實現過程中需要的數據結構可能與保存到數據庫中的實體類不一致,所以才有了值對象的出現。例如:在User類中只需要用戶名和密碼,但是在實際的注冊過程中,可能還需要再次輸入密碼,來確保用戶輸入的正確性,此時值對象設計的意義就出現了。
在該系統架構中,基本業務流程處理如下:
1、在展示層中,利用Bootstrap框架構建相應的Jsp頁面,實現用戶與系統之間的交互界面。
2、利用Jsp頁面傳送用戶的操作請求request和接受系統返回的響應response。在系統接收到jsp頁面中傳來的操作請求后,Struts2根據Struts.xml配置文件,將不同的請求分派到對應的Action中進行處理,並且根據Action處理后返回的字符串,返回對應的Jsp響應頁面。
3、在Action中,通過業務邏輯接口調用業務邏輯層的業務功能實現。
4、在業務邏輯層中,Spring的IOC容器負責向展現層提供實體對象(Model)、值對象(Vo)以及對應的業務邏輯處理實體,同時為Hibernate提供SessionFactory、可聲明的事務管理。
5、在數據訪問層,Hibernate利用*.hbm.xml文件實現實體對象與數據庫表之間的映射,利用session和HQL語句實現與數據庫之間的交互。同時通過數據訪問控制接口向業務邏輯層提供數據操作功能,並返回相應的操作結果。
利用上述的系統架構進行開發,可以發現在展現層中,實現了視圖(view),控制器(controller),模型(model)的徹底分離,同時展現層,業務邏輯層,數據訪問控制層三層之間通過接口進行連接,這樣就實現了三層的分離,很大程度上的降低了系統各個功能模塊之間的耦合度。只要能提供接口的實現,各層發生怎么樣的變化都不會影響到其它層的功能實現。這樣的層次結構設計,提高了系統的可復用性,以及開發的靈活性。並且因為各個模塊之間的耦合度小,有利於開發團隊的成員能夠選擇自己擅長的開發方向,進行並行開發,也可以進行獨立的單元測試,大幅度地提高了開發的效率以及縮短了系統開發的周期。
- 功能實現順序圖
順序圖是系統動態方面的建模,主要是為了分析在業務邏輯功能實現過程中,對象創建,改變,銷毀的時間,以及它們之間相互調用的關系。更重要的是通過順序圖,可以明確各個類在實現業務邏輯功能過程中的職責,在接下來的詳細設計中也可以通過順序圖,對各層中的接口進行定義。
為了達到上述的要求,順序圖的繪制過程也有需要注意的事項:
1、畫圖的方向需要從左到右,從上往下。
2、在繪制的過程中主要考慮展現功能實現正常的情況。
登錄
注冊
添加購物車
查看購物車
購買
查看訂單
檢索商品
商品信息管理
用戶管理
- 數據字典
購物車表(id(自增),用戶名,商品編碼,購買數量),保存會員添加到購物車中的商品信息。會員生成訂單時,對應用戶名的購物車表全部刪除。
訂單表(id(自增),用戶名,收貨地址,聯系電話,支付狀態),保存用戶的訂單記錄信息。
訂單_商品表(訂單表id,商品編碼,購買數量,商品價格),保存訂單與訂單中商品之間的聯系。
用戶表(id(自增),用戶名,密碼),保存用戶的登錄信息。
商品表(商品編碼,商品名稱,商品類型,商品圖片,商品價格,商品概述,商品詳細介紹),保存商品的描述信息。