利用抽象工廠模式和策略模式組織網站業務模型層的實踐_第1頁
利用抽象工廠模式和策略模式組織網站業務模型層的實踐_第2頁
利用抽象工廠模式和策略模式組織網站業務模型層的實踐_第3頁
利用抽象工廠模式和策略模式組織網站業務模型層的實踐_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、利用抽象工廠模式和策略模式組織網站業務模型層的實踐張亞南在網站制作過程中,我們可能遇到不同的對象進行不同處理的。如何做到代碼復用的最大化,提 高開發速度?軟件設計思想中重要的設計原則可以給我們一些提示。1、分離變化。網站中,表結構在變化,但是對表的操作無非增刪查改,因此我們有了將數據庫結構和數據操作分開的想法,于是有了Row類及其不斷變化的子類和不變的Db類。對于一個數據結構既定的網站,其資源一定,當時對資源的操作隨著需求變化而不斷增加,因此我們有理由將資源對象獲取合適的資源操作方法與具體的資源操作方法分開。并有資源根據需求去注冊資源操作方法。這是抽象工廠模式。豐富網站功能就是豐富資源操作方法

2、,每個操 作方法就是一個一種業務。編寫大量的業務集合供控制層調用,這是策略模式。控制層根據 用戶請求,才做不同的資源,使用不同的方法。2、 編程過程中針對 Recourse和ActionAdapter兩個抽象類進行操作,無論當前是什么操作方法, 自用調用對應的接口方法,就可以了。這符合針對接口編程的原則。一、 模型LserR儷14卜col-innRyAirm1*init().Lfl i.111 rjetAcliurLdiipler(in hpu:1 v(in row)+100(111 Jb)T山 i sc+rkitft+sci. kcixxjr sc (iii rucaui m?) + m1

3、kll M i - lL訂;L!Icheck 血 Ih(+run(* i 門+-opdHte()恤h忙f )ArticldluVscrObj1HicleAddAdapterUserArow =$row ;function_construct( $db , $row )$this-db = $db ;$this-setRow( $row );2、 ActionAdapter 類 資源操作類 data 的形式、規格需要事先說明 abstract class ActionAdapter var $recourse = null ;var $datanullfunction$thissetRecour

4、se($recourse-recourse =$recoursefunction$thissetData(-data =$data )$data ;abstractfunctioncheckData();abstractfunctionrun();function_construct( $recourseif ( $recourse )=null , $data =null );$this -setRecourse( $recourse if ( $data )$this -setData( $data );測試方法1、 ArticleObj 類 一種資源,重寫 getAction 方法,是變

5、化的部分 class ArticleObj extends Recoursefunction getAdapt ( $type )$action = null ;switch ( $type )case Recourse:DELETE :include_once dirname (_FILE_)./ArticleRemoveAdapter.php ;$action = new ArticleRemoveAdapter( $this );break ;/if ( $action = null )throw Exception( 您的請求不正確 , 1);return $action ;2、 Ar

6、ticleRemoveAdapter 類 具體的資源操作方法,是不變的部分。 Data 應該是一個對應的 id 。 class ArticleRemoveAdapter extends ActionAdapter public function run()if (! $this -checkData()throw Exception( 數據不符合要求 , 2);foreach ( $this -recourse-row-col as $value )$value -colValue = null ;$head = $this -recourse-row-getHead(); / 獲取字段頭$t

7、his -recourse-row-col $head . id -colValue= $this -data;/調用Db的刪除方法,刪除id對應的資源return $this -recourse-db-delete($this -recourse-row, $this -recourse-row-col$head . id );/ 根據實際需求,重寫數據完整性檢查方法public function checkData()return DataCheck:checkInteger($this -data);3、主流程/ 建立數據庫連接$db = new Db( mysql:host=localhost;dbname=db, user , password );/ 實例化數據庫結構類$art = new Article();/ 實例化一個文章資源對象$ ArticleObj = new ArticleObj ($db , $art );/ 文章資源對象中獲取對應刪除操作的操作類$ ArticleObjRemoveAdapt= $ ArticleObj -getAdapt(recourse:DELETE);/ 向操作類中填入數據$id = 1;$ ArticleObjRemoveAdapt-setData( $id );/ 檢查

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論