1

我正在涉足更严重的 OOP(以前,只是使用继承),我偶然发现了一些让我感到困惑的事情。

我有一个处理我的数据库连接的超类。

我有一个处理与站点成员功能相关的连接的子类

我想采用策略模式来允许不同但相似的功能共存。例如:

  • 连接到数据库并检查新注册的姓名和电子邮件
  • 连接到数据库并检查用户名和确认码以进行注册确认
  • 连接到数据库并检查用户名和密码以进行登录
4

2 回答 2

2

抽象类可以扩展 PHP 中的超类吗?

class A {}
abstract class B extends A {}
class C extends B {}

var_dump( new C );

object(C)#1 (0) {}

所以答案是:是的,抽象类可以扩展 PHP 中的超类。

标题更新后编辑:

是的,子类实现接口是完全可以的。但是,在 Strategy 的上下文中,您可能不会在任何其他接口上调用方法,而不是在派生类中捕获抽象和隐藏实现细节的接口。见http://sourcemaking.com/design_patterns/strategy

于 2011-01-26T16:59:36.100 回答
0

在不知道您的代码的情况下,这很难回答。根据我从您的问题中可以得出的结论,我想说在这种情况下您应该使用组合而不是继承。

您可以拥有各种“服务类”,这些“服务类”包含数据库连接以进行与特定问题域相关的查询。他们都有一个$dbConnection可以用来进行查询的属性。您可以使用依赖注入从外部设置该属性,可以使用 setter 方法 ( setDbConnection($dbConnection)) 或直接在各种服务对象的构造函数中将其传递给参数。

于 2011-01-26T17:06:19.383 回答