Flyingis

          Talking and thinking freely !
          Flying in the world of GIS !
          隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
          數(shù)據(jù)加載中……

          MVC的一幅簡單素描

          ?作者:Flyingis

          ?

          素描工具: Struts + Hibernate 3

          素描對象:一個足夠簡單的基于 MVC Web 應(yīng)用

          目的:使用 Struts 分離業(yè)務(wù)邏輯與表現(xiàn),使用 Hibernate 分離數(shù)據(jù)操作與業(yè)務(wù)邏輯,整理一種基本的 MVC 開發(fā)思路。

          ?

          1. 素描框架
          ?

          ??? 該素描主要體現(xiàn)在系統(tǒng)層次的功能劃分,系統(tǒng)結(jié)構(gòu)的組織與設(shè)計(jì)上,素描足夠簡單,數(shù)據(jù)庫中只涉及一張表:

          ??? 學(xué)生信息(學(xué)生編號、姓名、性別、年齡、專業(yè)信息)--Student( id, name, gender, age, specialty_id )

          • 系統(tǒng)設(shè)計(jì)

          ??? 公共類的設(shè)計(jì)與實(shí)現(xiàn)

          ??? 各模塊的詳細(xì)設(shè)計(jì),主要描述一個基本的 CRUD 操作,以及對象數(shù)據(jù)傳遞

          • 系統(tǒng)的部署、測試與發(fā)布

          2. 公共類設(shè)計(jì)
          ?

          ??? 基本的 CRUD 操作封裝在基本的幫助類 HibernateHelper 中,實(shí)現(xiàn) Object load(Class theClass, java.io.Serializable id) Query createQuery(String queryString) void setQueryParameter(Query query, String name, Object val) List list(Query query) void save(Object o) void update(Object o) void delete(Object o) void saveOrUpdate(Object o) 等這些基本方法。
          ?

          ??? 常量單獨(dú)封裝在 Constants 類中。

          ?

          3. 各種對象設(shè)計(jì)

          • ActionForm:StudentForm-- 用于視圖層與控制層之間傳遞數(shù)據(jù)。
          • 接口 StudentIf-- 實(shí)現(xiàn)了學(xué)生數(shù)據(jù)對象 Bean 所需要的所有接口方法。
          • 學(xué)生數(shù)據(jù)對象 StudentData-- 實(shí)現(xiàn)了記錄學(xué)生對象數(shù)據(jù)的功能,并可以用作數(shù)據(jù)交互的傳輸對象,它實(shí)現(xiàn)了接口 Serializable StudentIf
          • 學(xué)生實(shí)體 Bean StudentBean-- 實(shí)現(xiàn)了學(xué)生實(shí)體的所有屬性,它實(shí)現(xiàn)了接口 Serializable StudentIf

          4. 對象管理實(shí)現(xiàn)類
          ?

          ??? 業(yè)務(wù)邏輯處理為項(xiàng)目的核心,直接關(guān)系到項(xiàng)目是否符合用戶需求。因此,我們可以單獨(dú)設(shè)計(jì)一個對象管理實(shí)現(xiàn)類 ManagerFacade,定義處理業(yè)務(wù)對象的CRUD操作,以增加學(xué)生信息為例public StudentIf addStudent(StudentIf student)。學(xué)生數(shù)據(jù)對象StudentDataAction中通過StudentForm接收到表現(xiàn)層傳入的數(shù)據(jù),然后作為ManagerFacade對象的addStudent方法的參數(shù)傳入方法內(nèi),在方法體內(nèi)聲明學(xué)生實(shí)體StudentBean的一個對象,將學(xué)生數(shù)據(jù)對象即傳入?yún)?shù)中的屬性值賦給實(shí)體對象,然后調(diào)用公共類HibernateHelper的save方法完成數(shù)據(jù)庫操作。其他基本操作與此類似,這樣設(shè)計(jì)似乎對象較多,但各層之間分工明確,有利于降藕。

          ??? 另外,在數(shù)據(jù)傳遞過程中,還會涉及到數(shù)據(jù)類型的轉(zhuǎn)換,可以專門設(shè)計(jì)幫助類來完成。

          ?

          5. 頁面 UI 設(shè)計(jì)
          ?

          ??? 除了設(shè)計(jì)美觀的頁面外,最重要的是頁面結(jié)構(gòu)要符合項(xiàng)目需要,并提供一定的使用體驗(yàn),有時(shí)候簡單實(shí)用就是最好。如果可以對用戶瀏覽器統(tǒng)一規(guī)范要求,或是基本不會屏蔽 Javascript ,數(shù)據(jù)格式的控制可以放在客戶端用 Javascript 實(shí)現(xiàn)。

          ?

          6. 系統(tǒng)的部署、測試與發(fā)布。

          posted on 2006-03-27 17:50 Flyingis 閱讀(2627) 評論(6)  編輯  收藏 所屬分類: Web 框架與開發(fā)

          評論

          # re: MVC的一幅簡單素描  回復(fù)  更多評論   

          基本上看不出mvc
          2006-03-27 18:23 | good

          # re: MVC的一幅簡單素描  回復(fù)  更多評論   

          在這個場景中,StudentForm是VO,StudentBean是可以被持久化的實(shí)體對象,即PO,StudentData在這里主要起到BO的作用,但不包括業(yè)務(wù)邏輯,業(yè)務(wù)邏輯從BO中分離出來,單獨(dú)封裝在對象管理的一個類中,這樣便于對象間的解耦和分離,文中描述的是各對象之間相互銜接作用的一種簡單的方式,看了很多高手的大作和討論,理論性特別強(qiáng),因此通過一個簡單的實(shí)例描述了一種傳輸方式。
          以前對這些概念比較模糊,現(xiàn)在也在學(xué)習(xí)中,請多指教。
          2006-03-27 21:34 | Flyingis

          # re: MVC的一幅簡單素描  回復(fù)  更多評論   

          以前在NEC系統(tǒng)集成工作的時(shí)候,開發(fā)web程序用的是小日本的自己框架,小日本很狂妄的說,這個框架你們很難理解的,后來一看,標(biāo)準(zhǔn)的mvc模式

          過了一年,用了structs,發(fā)現(xiàn)小日本框架就是個簡化版的structs

          MVC模式經(jīng)久不衰


          歡迎訪問:http://www.shuangzixing.net
          2006-03-28 20:40 | fanse

          # re: MVC的一幅簡單素描  回復(fù)  更多評論   

          bgchd e ghdtrhg aa
          2006-04-19 12:02 | zhangxiuxiu

          # re: MVC的一幅簡單素描  回復(fù)  更多評論   

          @Flyingis
          請教:
          Struts , Hibernate在.net環(huán)境,VC++環(huán)境的對應(yīng)框架有哪些?
          2007-05-24 08:51 | flyingfish

          # re: MVC的一幅簡單素描  回復(fù)  更多評論   

          @flyingfish
          VC++很少應(yīng)用于Web應(yīng)用開發(fā),.Net框架中的主流web開發(fā)語言是vb.net和c#。
          由于Java開源的本質(zhì),其MVC框架往往有多種選擇,但.net框架中就只有asp.net可以選擇,簡單易用,最明顯的不足是不能跨平臺部署。
          Hibernate在.net中有Nhibernate可以選擇,后者生于前者。
          2007-05-24 22:40 | Flyingis
          主站蜘蛛池模板: 昂仁县| 松江区| 兴安盟| 禹城市| 大邑县| 乡宁县| 那曲县| 林西县| 丹东市| 布拖县| 砚山县| 湟中县| 南和县| 芒康县| 大荔县| 桑植县| 闸北区| 河北省| 重庆市| 定兴县| 灵川县| 韶山市| 金平| 孟津县| 临猗县| 昌平区| 遂川县| 都安| 福清市| 德格县| 和硕县| 周宁县| 台山市| 姚安县| 博野县| 东丰县| 兴国县| 德安县| 宿州市| 静乐县| 鹿泉市|