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模式设计模式是否有任何开源资源?