熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

使用XML文件作為Web持久層的OO分析過程

2013-11-23 19:51:28  來源: Java高級技術 

  在一個Web系統中有這樣的需求一個頁面需要對一個XML文件進行CRUD等操作如何設計一個系統適合這樣的需求呢?

  最容易直接想到的是一個類完成節點的CRUD及IO操作但這違反了類的設計原則類應當只有一個中心任務

  所以按功能來分我們必須要兩個類:

  一個類負責節點CRUD操作;// 簡稱CrudClass

  一個類負責節點的IO操作;// 簡稱IoClass

  這樣基本可以了再細分下去沒有必要

  再來看第一個類它是直接與一批業務代碼打交道的首先要求速度要快如果把解析出來的Dom放在類裡一則CrudClass做了IoClass做的事二再速度上也上不去所以這裡我把dom裡面的節點對應成了一個鏈表一個值和一個Map業務代碼實際處理的就是這三個東西他們不關心也不必要知道是否存儲到了文件裡而且速度上得到了充分保證

  其次各個業務代碼處理的是同一事務這裡再把CrudClass做成單例(Singleton)形式的做成全靜態也可以但這種做法不太上台面

  IoClass是CrudClass的持久化操作他們之間實際是倉庫管理員和物流調度間的關系這種關系有以下三種實現方式:

  在他們間實現觀察者模式由IoClass來觀察CrudClass變化後寫入文件初看這種方式很好的完成了解偶實際上IoClass還是需要知道CrudClass的細節否則無法更新而且創建IoClass的過程比較麻煩客觀世界可沒有這樣的處理所以說觀察者處理當拋棄

  將IoClass作為CrudClass的成員這種方式避免了IoClass創建的不必要的復雜過程而且CrudClass知道IoClass的處理接口就行了IoClass無需知道CrudClass的任何部分實現了有效解偶其三符合現實世界IoClass確實應該是CrudClass的下級只接受CrudClass指派的任務而外界無須知道IoClass完全不必知道

  將IoClass獨立處理出來與CrudClass等做成JMS異步通信方式或WebService通信方式這個想法更OO但是成本比較高復雜度大在大型系統可以考慮實現這種方案

  綜合上面的意見選擇方案是最適合的

  至此對一個XML文件進行CRUD操作的系統設計完成再適當剝離一些通用代碼形成實用類就差不多了這裡不再贅述

  還是那句老話道法自然程序實現可以有N種實現方式我們應該選擇最符合自然的一種


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27575.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.