完成抽象类的常见做法是什么?

时间:2010-06-01 07:11:48

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

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

构成此类结构的最佳做法是什么? 或者首先是一个糟糕的设计?

  1. 声明孩子必须实现的抽象函数?
  2. 声明在子类中重写的普通函数?

1 个答案:

答案 0 :(得分:1)

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

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