1

我想知道在需要角色或特征但在经典继承环境中应该做什么。我在两条道路上产生了一个类,这两条道路都来自一个根类,但是,我想将两条道路上的不同类链接在一起以共享相同的功能。见下文:

+-- Base
 +-- Base_Processor
 | +-- Base_Processor_Request
 |  +-- Base_Processor_Request_Ajax
 +-- Base_Impl
  +-- Base_Impl_MyImpl
   +-- Base_Impl_MyImpl_Processor (extends from Base_Processor)
    +-- Base_Impl_MyImpl_Processor_Request (extends from ??)
     +-- Base_Impl_MyImpl_Processor_Request_Ajax (extends from ??)

将 Base_Impl_MyImpl_Processor_Request 和 Base_Processor_Request 链接在一起,同时仍然从 Base_Impl_MyImpl_Processor 扩展的最佳方法是什么,并且还以相同的方式链接 Base_Impl_MyImpl_Processor_Request_Ajax。

提前致谢。

4

1 回答 1

2

我 100% 同意Alex Burtsev的评论 - 许多级别的继承看起来像是依赖项的噩梦(而且,正如您所发现的,当您使用继承时,很难在类之间重用特定的代码位)。

通常我不希望trait类被插入到一个层次结构中——在我看来,trait 是独立的概念,它定义了实现细节的变化,因此只属于一个接口而不是从一个基类派生

如果这是现有代码,并且您有多个元素需要在不同的派生类之间重用,我认为将它们拆分为与您的层次结构完全无关的单独类会更有意义。

看起来ProcessorRequest并且Ajax可以更好地为您服务作为单独的实体。

于 2012-04-11T21:48:41.810 回答