【问题标题】:What's a common practice of completing abstract class?完成抽象类的常见做法是什么?
【发布时间】:2010-06-01 07:11:47
【问题描述】:

你有一个类,它非常适合作为一个抽象类,但是如果没有派生类提供的数据,这个类就不能正常工作。将所有数据传递给构造函数并不方便,因为并非所有数据都可能需要,而且其中许多可以是动态的(来自子函数)。

组成这种结构的最佳做法是什么? 或者它本来就是一个糟糕的设计?

  1. 声明抽象函数,该子函数必须实现?
  2. 声明在子类中被覆盖的普通函数?

【问题讨论】:

    标签: php class theory class-design abstract-class


    【解决方案1】:

    如果该函数有一个合理的默认行为可以在大多数子项中依赖,则可以将其作为正常的执行。否则(没有默认行为和/或大多数孩子必须覆盖它),最好将其声明为抽象。副作用是您永远不会忘记在子类中定义它,因为不这样做会立即报告。

    另一个机会是对特定于子类的数据使用容器(例如数组),但仍需进行一般检查或其他可在共同祖先中完成的处理。这样,您定义了一个保存数据的变量,但数据本身填充在子项中。父类中的代码可以遍历这个容器并对所有元素做一些例行的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 2011-07-16
      • 2011-03-17
      • 2010-10-16
      • 2011-11-13
      • 2020-05-07
      相关资源
      最近更新 更多