OO Tasarım: Bir üst bir alt sınıf döndürülüyor

3 Cevap php

Ben doğru ifade soruma umuyorum bu yüzden polimorfîzmin gelince ben hala bir acemi değilim.

Köpek, Kedi ve Fare - Hadi benim Veritabanı tablo var diyelim. Gibi bir şey aramak mümkün istiyorum:

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

: Hayvan sınıfı gibi bir şey olmak

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;
  }
}

Bu işe yaramazsa ama yeni Animal aramak ve belirli hayvan geçmesi ve iade sahip olmak istiyorum. Bunu nasıl tasarlayabilirsiniz? (PHP kullanıyorum).

3 Cevap

Ne aradığınız aslında Fabrikası Desen denilen bir tasarım modelidir. Bunu üzerine burada okuyabilirsiniz:

Factory Pattern

PHP ve bazı uzun makaleler:

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

Ne istediğiniz bir "Fabrika Pattern" dir. Doğrudan yeni Animal s yaratmak yerine, oluşturmak için hayvan türünü seçer bir işlev çağırın. Java'da Herhalde sınıfının statik bir yöntem, ve Python ben anahtarına bağlı bir sözlükteki tüm hayvan sınıfları saklamak istediğinizi yapmak istiyorum, bu yüzden anahtarını bakmak olabilir ve daha sonra kurucu boyunca argümanların .

PHP için, ben Using the Factory Pattern in PHP üzerine bir makale bulunamadı.

Ben php bilmiyorum ama eğer yardımcı olur bahsediyorsun tasarım deseni denir

Fabrika

Try searching for "gang of four Fabrika" for an explanation of the pattern.

Ardından "php fabrika model uygulanması" için aramayı deneyin