私はモデルのシステムを持っています:
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があり、R00_Model_Postはそれから継承されたいと考えています。しかし、それは不可能であり、R00_Model_iTaggedUniqueからすでに継承されており、R00_Model_iCommentableUniqueからR00_Model_iTaggedUniqueを継承すること、またはその逆は賢明ではないと思います。私はそれをどのように実装するかを1つだけ考えましたが、いくつか疑問があります。たぶん、あなたはいくつかの賢い方法について私に話すか、その方法を批判することができますか?
R00_Model_i * Uniqueをクラスではなくインターフェースにして、R00_Model_Helper_iUniqueなどのヘルパーオブジェクトを作成することを考えました(おそらくそれは一般的なパターンであり、クールな名前がありますが、「ヘルパー」はそこでクールになるとは思いませんか? )。次に、R00_Model_iUniqueで、__ call()を作成します。これは、呼び出されたオブジェクトのすべてのインターフェイスをチェックし、ヘルパーで呼び出されたメソッドを検索します。
それとも、反射やその他の邪悪な遅いものが多すぎますね。