ryb*_*ome 5 php oop design-patterns
我有一个名为的抽象类Node.它包含一个构造函数,它从我的数据库中获取一行,并实例化基本信息.在我的网站内容全部件扩展此类- ,Person,Event,Project等.
其中3个扩展类是特殊的 - 构建它们时,除了从数据库中提取值之外,还需要查询Web服务; 如果Web服务提供的值与DB中给出的值不同,则需要保存到DB.
在具有多重继承能力的语言中,这将非常简单; 这些类中的任何一个将扩大双方Node,和APIData,或类似的东西.没有MI,我不知道如何处理这个问题.使用接口没有帮助,因为它没有提供具体的实现.
装饰模式有时被推荐为MI的某些特征的替代,但我没有足够的经验来确定这是否是合适的选择.有什么建议?
由于该类APIData将从您的类中获取功能Node,因此您应该简单地扩展它。这是一些伪代码:
abstract class APIData extends Node {
public function __construct($data) {
parent::__construct($data);
$this->checkData();
}
protected function checkData() {
// load data from webservice
$data = $this->loadData();
// check if data is the same
foreach($data as $item => $value) {
if ($this->data[$item] != $value) {
// save in database
}
}
}
}
Run Code Online (Sandbox Code Playgroud)