茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1729579 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_00052.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

爪哇咖啡屋 : [轉貼]Design Pattern - Data Access Object

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]Design Pattern - Data Access Object

Design Pattern — Data Access Object

發佈日期: 作者:

DAO(Data Access Object) 應該是最基礎且最廣泛運用的一個設計模式了。其適用的情境為:

  • 程式需要利用別的媒介來儲存或取得資料
  • 程式需要能移植到其它儲存媒介
  • 各個儲存媒介之間使用的存取方式不同
  • 希望程式不會受到儲存媒介的變換而修改

DAO 通常看到的範例都會與另外一個物件搭配使用,稱之為 Data Transfer Object 。但是這兩者之間並不一定要綁在一起用。DAO 的重點在提供一個統一的資料存取方式,而回傳的資料可以用 DTO 表示,但也可以用其它方式(例如陣列)來實作。這邊以一個會員系統為例,如何以 DAO 模式來提供會員相關資料的存取。

首先需要設計一個 Interface 來提供資料的存取,這邊為了簡化程式數量,還是按照常見作法搭配 DTO 來使用:

PHP


interface IUserDAO
{
public function create();
public function findById($id);
public function updateUser(User $user);
public function deleteUser(User $user);
}

1
2
3
4
5
6
7
interface IUserDAO
{
     public function create ( ) ;
     public function findById ( $id ) ;
     public function updateUser ( User $user ) ;
     public function
deleteUser ( User $user ) ;
}

有了這個 Interface 之後,我們就可以實作兩種 DAO 分別對應到記憶體與資料庫這兩種不同的儲存媒介:

PHP


class MemoryUserDAO implements IUserDAO
{
public function create()
{
// TODO: Implement create() method.
}
public function findById($id)
{
// TODO: Implement findById() method.
}
public function updateUser(User $user)
{
// TODO: Implement save() method.
}
public function deleteUser(User $user)
{
// TODO: Implement delete() method.
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class MemoryUserDAO implements IUserDAO
{
     public function create ( )
     {
         // TODO: Implement create() method.
     }
 

     public function findById ( $id )
     {
         // TODO: Implement findById() method.
     }
 
     public function updateUser ( User $user )
     {
         // TODO: Implement save() method.
     }
 
    
public function deleteUser ( User $user )
     {
         // TODO: Implement delete() method.
     }
}

原文出處: Design Pattern — Data Access Object | C瓜農場
前一個主題 | 下一個主題 | | | |

討論串




Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|