Php birden çok devralma öykünmek

1 Cevap php

Ben Modellerinin bir sistem var:

abstract class R00_Model_iUnique { }
abstract class R00_Model_iFamilyUnique extends R00_Model_iUnique { } // for models with hierarchy
abstract class R00_Model_iTaggedUnique extends R00_Model_iUnique { } // for models with tags

// and, for example
class R00_Model_User extends R00_Model_iUnique { }
class R00_Model_Comment extends R00_Model_iFamilyUnique { }
class R00_Model_Post extends R00_Model_iTaggedUnique { }

R00_Model_iCommentableUnique ve R00_Model_Post ondan miras istiyor olacak yoktur. Ama bu zaten R00_Model_iTaggedUnique miras var, mümkün değil, ve ben bu R00_Model_iCommentableUnique veya tersi R00_Model_iTaggedUnique devralan zeki olduğunu sanmıyorum. Ben bunu uygulamak için nasıl tek bir fikir kadar düşündüm, ama bazı şüphelerim var. Belki bazı akıllı yöntemler hakkında bana söylemek veya bu yöntemi eleştirmek mi?


Ben belki de ortak bir paterni, ve serin bir isim var, ben 'Yardımcı' orada serin olacak sanmıyorum R00_Model_i * Benzersiz değil sınıflar, ama arayüzler yapmak ve bu R00_Model_Helper_iUnique (gibi yardımcı nesneleri oluşturmak kadar düşündüm? .) Sonra, R00_Model_iUnique yılında, bir denilen nesnenin tüm arabirimleri denetler ve yardımcısı çağrılan bir yöntem arar __ () çağrısı, oluşturun.

Veya çok fazla yansıma ve diğer kötü yavaş şeyler orada, değil mi?

1 Cevap

Sen bir arabirim ve yardımcılarını (kompozisyon) kullanarak doğru yönde.

Bu tam olarak neden Kitabı (GoF) olan Design Patterns ilkeleri üzerinde nedenlerinden biridir "Favor composition over inheritance".

Composition will give you the flexibility you require to use methods of different classes In the class that you need it.