我有以下类结构(Blah === ExtBlah):

Base
 +--[ ExtBase ]    --???-- [ ExtBlah ] --- .. more scripts ...
 +--[ Blah ]
        +---[ Script1 ]
        +---[ Script2 ]
        +---[ ....... ]
        +---[ ScriptN ]


现在,我需要编写更多的脚本,这些脚本需要扩展Blah,但是对于新的脚本案例,Blah必须扩展“ ExtBase”,而不是“ Base”。

我仍然必须使用Blah,因为Scripts1-N必须依赖于“ Base”,而不是“ ExtBase”。

我也不想创建Blah的副本,即ExtBlah,因为这意味着代码的重复,并且将更难以支持。

有任何想法吗 ?

最佳答案

正如Jean-Baptiste在其评论中所述,如果您不想复制Blah的代码,请将其封装到ExtBlah中并调用Blah的方法。记住要添加一个公共接口。实际上,接口试图解决一些多重继承问题。

Base
 +--[ ExtBase ]
 +--[ Blah ] implements BlahInterface
        +---[ Script1 ]
        +---[ Script2 ]
        +---[ ....... ]
        +---[ ScriptN ]
 +--[ ExtBlah: - private Blah instance] implements BlahInterface
        +---[ ScriptK ]

07-24 14:39