OO设计:从父母那里返回子课程

时间:2009-06-03 17:31:48

标签: php oop polymorphism

在多态性方面,我仍然是新手,所以我希望我能正确地说出我的问题。

假设我的数据库中有表格 - 狗,猫和鼠标。我希望能够打电话给:

$animal = new Animal("dog", 12);

动物类是这样的:

class Animal {
  protected $id;
  protected $legs;
  protected $height;
  function __construct($type, $id) {
    if ($type == "dog") {
      return new Dog($id);
    }
  }
}

class Dog extends Animal {
  function __construct($id) {
    $this->id = $id;
    $this->legs = 4;
    $this->height = 1;
  }
}

这不起作用但我希望能够调用一个新的动物并传递特定的动物并让它返回。我该如何设计呢? (我正在使用PHP)。

3 个答案:

答案 0 :(得分:5)

您正在寻找的实际上是一种称为工厂模式的设计模式。你可以在这里阅读:

Factory Pattern

还有一些较长篇的PHP文章:

Design Patterns in PHP
The Basics of Using Factory Pattern in PHP

答案 1 :(得分:2)

你想要的是“工厂模式”。而不是直接创建新的Animal,而是调用一个选择要创建的动物类型的函数。在Java中,我可能会将它作为类的静态方法,并且在Python中我将所有Animal类存储在链接到键的字典中,因此我可以查找键,然后将参数传递给构造函数

对于PHP,我在Using the Factory Pattern in PHP上找到了一篇文章。

答案 2 :(得分:0)

我不知道php,但如果它有助于您所谈论的设计模式被称为

尝试搜索“四人帮”以获得该模式的解释。

然后尝试搜索“php factory pattern implementation”