相关疑难解决方法(0)

奇怪的多重继承的优雅替代品

我不能说这是一个问题,但更多的是一个意见请求,我相信很多其他人可以从澄清这个问题中受益.

这是我的实际案例:

我有一个名为DataExchangeService的抽象类和许多扩展此类的子类(这是我的MVC框架中的基本CONTROLLER类).处理数据定义的管理模块(用户,类型,部分等)在大多数情况下都具有100%相似性的添加,编辑,删除,列表方法.我知道,因为我只使用搜索和替换来复制它们.现在问题不是我的所有DateExchangeService子类都处理数据定义,因此有足够的情况我不需要CRUD方法.

多重继承会定义这些CRUD方法及其在另一个类中的行为,并且会在需要的地方扩展这两个类,但我确实认为它是棘手的东西,我不使用它(+ PHP没有这样的功能).那么最佳做法是什么?

以下是我想到的方法:

案例A

  1. 定义一个CRUDHandler类,其中包含所有这些参数化方法.

  2. 在需要的地方创建CRUDHandler类型的属性,并实现将迫使我使用这些方法的CRUD接口.

  3. 在实现方法的主体中,我添加如下内容:

public function edit($params) {
    $this->params = $params;
    $this->CRUDHandler->handle("edit", $this);
}

(在PHP中,这可以使用__call()魔术方法完成.)

案例B

  1. 将类CRUDHandler定义为扩展基础DataExchangeService.

  2. 在定义特定类型的DataExchangeService(例如UsersExchangeService)而不是扩展DataExchangeService时,您可以扩展CRUDHandler,这样您就可以在需要时获得所需的一切.

那么,对于这种MultiInheritance方法还有其他意见吗?

谢谢

php oop multiple-inheritance

4
推荐指数
1
解决办法
1252
查看次数

标签 统计

multiple-inheritance ×1

oop ×1

php ×1