有这么一个设计需求:提供一个仅支持POST请求的接口,用于收集提交过来的数据,并实现数据持久化存储。并要求提供对数据的过虑及对不同存储介质提供可扩展,提高代码的可复用性。根据设计模式原则:对修改关闭,对扩展开放。模型中需要引入数据中间件和依赖注入。
- 数据中间件可对数据进行过虑
- 依赖注入可实现对不同介质的存储操作
根据以上需求,初步构想得到以下结构模型:
// 存储介质接口模型
interface ActiveRecord {
public function setAttributes(array $data);
public function save();
}
class PostRoom {
private $_middleware; // 数据中间件
private $_data; // 传入的数据
public function __construct($postData) {
$this->_data = $postData;
}
// 设置数据中间件以进行数据过虑
public function setMiddleware(array $middlewares) {
// todo here
}
// 存储介质依赖注入
public function save(ActiveRecord & $writer) {
$data = $this->middleware_filter($this->_data);
$writer->setAttributes($data);
return $writer->save();
}
// 使用数据中间件对数据进行过虑
public function middleware_filter($data) {
if (!$this->_middleware) {
return true;
}
$clear_data = $data;
}
}
未完待续