Önerdiği gibi bir 'baseItem' sınıfı uygulamanın yanı sıra, aynı zamanda tüm öğeleri olmalıdır yöntemlerini özetleyen için bir arabirim sınıfı gelişmekte dikkate isteyebilirsiniz. Sonra, her öğe türü farklı bu yöntemleri uygulamak olabilir.
Örneğin, tüm öğeleri bir 'donatmak ()' yöntemi olması gerekebilir, ama öyle öğelerin hangi tür dayalı farklı şekilde uygulamak. Sen her öğe için bir sınıf oluşturmak için gerek olmayabilir, ama muhtemelen (veritabanında saklanabilir) sağladığınız veri yapısı çeşit dayalı öğelerin benzersiz örneklerini yaratma yeteneğine sahip sınıflar oluşturmak gerekir.
Gerçekten genel bir örnek olabilir:
class Leather_Armor extends Armor_Base implements Equippable
{
// these would probably be defined in the base class instead of here
protected $_itemName;
protected $_itemDescription;
protected $_defenseRating;
public function __construct(params)
{
// intialize properties with data from the db
}
// the Equippable interface requires us to define this function
public function equip()
{
// call a function from the base class
$this->recalculateDefenseRating($this->defenseRating)
}
}
Muhtemelen tam bir fikir edinmek için arayüzleri ve soyut sınıflar kadar okumalısınız.
Ayrıca, bu bin farklı şekillerde yaklaşılabilir daha çok geniş, açık uçlu bir soru olduğunu unutmayın. Daha spesifik bir şey sormak, ya da somut örnekler sunmak isteyebilirsiniz.