【问题标题】:Static classes inheriting from abstract class in PHP静态类继承自 PHP 中的抽象类
【发布时间】:2011-10-11 09:21:10
【问题描述】:

我偶然发现了一个有趣的问题/错误,我最终解决了这个问题,但解决方案不是我所期望或希望的。

设置很简单。有一个抽象静态类Factory,它引用了一个单例(Registry)以及两个静态属性model表格

有许多静态类构建/继承自这个抽象类,它们都有一个 init() 方法,在该方法中设置 model属性。当然,由于 modeltable 是静态的,它们只能有一个值,该值对于抽象 Factory 类的所有子类都相同.这是问题/错误。

但是,我的目标是让每个子类都有自己的 modeltable,所以我不得不声明 modeltable 在每个子类中作为静态属性。这似乎有点麻烦(而且不是很干),但在我看来,这是唯一的解决方案,如果我想要(1)类继承自抽象 Factory 类和(2)保持静止。

我的假设是正确的还是我遗漏了另一种方法?

【问题讨论】:

  • 我不完全确定您指的是关于单例设计模式的讨论。诚然,单例确实有利有弊,但手头的问题是关于静态类的特定用例,它继承自抽象静态类,同时共享一组相同的属性。感谢您的链接。

标签: php inheritance static factory abstract


【解决方案1】:

目标是在不同的静态子类中为$model$table 设置不同的值?

假设是这种情况,我看不出如果不在每个子类中明确定义它们不同,你怎么可能做到这一点。

我不认为这很麻烦。我认为这是一种很好的做法——将功能保留在它所属的地方。

【讨论】:

  • 没错。我认为在这种情况下没有其他方法。繁琐可能是一个不好的词选择,但我尽量写得尽可能干。谢谢你的回答。
  • @BartJacobs - DRY 在与其他人平衡时更加有益,请参阅Real Ultimate Programming Power
猜你喜欢
  • 2015-04-07
  • 1970-01-01
  • 2011-04-02
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多