我不能说这是一个问题,但更多的是一个意见请求,我相信很多其他人可以从澄清这个问题中受益.
这是我的实际案例:
我有一个名为DataExchangeService的抽象类和许多扩展此类的子类(这是我的MVC框架中的基本CONTROLLER类).处理数据定义的管理模块(用户,类型,部分等)在大多数情况下都具有100%相似性的添加,编辑,删除,列表方法.我知道,因为我只使用搜索和替换来复制它们.现在问题不是我的所有DateExchangeService子类都处理数据定义,因此有足够的情况我不需要CRUD方法.
多重继承会定义这些CRUD方法及其在另一个类中的行为,并且会在需要的地方扩展这两个类,但我确实认为它是棘手的东西,我不使用它(+ PHP没有这样的功能).那么最佳做法是什么?
以下是我想到的方法:
定义一个CRUDHandler类,其中包含所有这些参数化方法.
在需要的地方创建CRUDHandler类型的属性,并实现将迫使我使用这些方法的CRUD接口.
在实现方法的主体中,我添加如下内容:
public function edit($params) {
$this->params = $params;
$this->CRUDHandler->handle("edit", $this);
}
(在PHP中,这可以使用__call()魔术方法完成.)
将类CRUDHandler定义为扩展基础DataExchangeService.
在定义特定类型的DataExchangeService(例如UsersExchangeService)而不是扩展DataExchangeService时,您可以扩展CRUDHandler,这样您就可以在需要时获得所需的一切.
那么,对于这种MultiInheritance方法还有其他意见吗?
谢谢