我有一个模型系统:
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 并不聪明,反之亦然。我只想到了一个如何实现它的想法,但我有一些疑问。也许您可以告诉我一些聪明的方法或批评该方法?
我想使 R00_Model_i*Unique 不是类,而是接口,并创建辅助对象,例如 R00_Model_Helper_iUnique (也许它是一个常见的模式,并且有一个很酷的名字,我不认为 'Helper' 在那里会很酷? )。然后,在 R00_Model_iUnique 中,创建 __call(),它检查被调用对象的所有接口,并在帮助程序中查找被调用方法。
或者有太多的反射和其他邪恶的慢东西,不是吗?