1
A
回答
0
我會用Data Mapper的方法去。 映射器不限於數據庫,它可以處理任何數據源(文件,數據庫,XML,API等)
最重要的是讓您的域模型與數據源分離。爲了使映射器真正可互換可能是一件困難的事情,因爲數據源是不同的。 XML源是不可寫的,因此您不能實現插入方法。
2
我認爲DAO是你在找什麼。
這樣想:
interface RdbmsDriver {
public function connect();
public function disconnect();
public function query($sql);
public function fetchAll($sql);
}
class MysqliDriver implements RdbmsDriver {
public function connect() { }
public function disconnect() { }
public function query($sql) { }
public function fetchAll($sql) { }
}
class PgsqlDriver implements RdbmsDriver {
public function connect() { }
public function disconnect() { }
public function query($sql) { }
public function fetchAll($sql) { }
}
abstract class RdbmsDao {
protected $driver;
public function __construct(RdbmsDriver $driver) {
$this->driver = $driver;
}
}
interface SomeEntityDao {
public function insert(SomeEntity entity);
public function update(SomeEntity entity);
public function delete(SomeEntity entity);
public function find($entityKey);
public function findAll();
}
/**
* Data from relational databases.
*/
class SomeEntityRdbmsDao extends RdbmsDao implements SomeEntityDao {
public function insert(SomeEntity entity) { }
public function update(SomeEntity entity) { }
public function delete(SomeEntity entity) { }
public function find($entityKey) { }
public function findAll() { }
}
// Use like: new SomeEntityRdbmsDao(new MysqliDriver(...))
/**
* Data from a webservice
*/
class SomeEntityWebServiceDao implements SomeEntityDao {
public function insert(SomeEntity entity) { }
public function update(SomeEntity entity) { }
public function delete(SomeEntity entity) { }
public function find($entityKey) { }
public function findAll() { }
}
class SomeEntityModel {
private $persistance;
public function __construct(SomeEntityDao $persistance) {
$this->persistance = $persistance;
}
}
相關問題
- 1. IOC設計模式是否獨立於工廠設計模式?
- 2. 在jboss獨立模式下設置數據源
- 3. MVC設計模式:分離模型和數據源
- 4. 獨立模型
- 5. MVC設計模式 - 設計模型
- 6. 數據庫+數據模型設計模式
- 7. 數據模型設計
- 8. 模型+數據庫設計
- 9. 數據庫設計模型
- 10. 用於常見數據模型設計模式的任何資源?
- 11. 設計數據庫模式
- 12. 爲具有多種數據類型的模型設計數據庫模式
- 13. CFML設計模式資源?
- 14. ViewControllers之間共享網絡數據模型的設計模式
- 15. MongoDB模式設計的文檔,可以嵌入或獨立
- 16. 計劃的數據庫模式設計
- 17. 模塊化設計(獨立原型與邏輯)
- 18. 獨立視圖模型
- 19. 張量流模型的設計模式
- 20. 數據庫設計何時適合使用單獨的模式?
- 21. 數據/數據庫設計模式?
- 22. AppFabric Cache獨立模式?
- 23. HBase獨立模式功能
- 24. Workflow Foundation獨立模式
- 25. 多個模型的數據庫設計?
- 26. c原型設計模式#
- 27. Swift原型設計模式
- 28. 星型模式設計
- 29. CakePHP3 - 用於數組/ JSON數據的獨立模型
- 30. SQL模式設計模式是否有任何開源資源?