假设我们有一个包含以下XML文件:在这种情况下如何避免多继承?
<document>
<tagA />
<tagB />
<tagC />
<tag1 />
<tag2 />
<tag3 />
<custom1/>
<custom2/>
</document>
,并假设我们有一个解析器对象扫描该文件。对于文件中找到的每个标签解析器调用处理程序对象的相应方法:
class Handler{
function tagA(){ ... }
function tabB(){ ... }
function tagC(){ ... }
function tag1(){ ... }
function tag2(){ ... }
function tag3(){ ... }
function custom1(){ ... }
function custom2(){ ... }
}
现在,假设我们要建立一个框架来处理上述类型的文件。为了确保代码的可重用性,我们可以在上面的类分成不同的(更专业)类:
class LettersHandler{
function tagA(){ ... }
function tabB(){ ... }
function tagC(){ ... }
}
class NumbersHandler{
function tag1(){ ... }
function tag2(){ ... }
function tag3(){ ... }
}
要为上述文件代码的处理程序,程序员可以采取框架的优势,只实现了缺失的方法(使用OOP继承):
class Handler extends LettersHandler, NumbersHandler{
function custom1(){ ... }
function custom2(){ ... }
}
根据该文件的内容,程序员可以选择只从一个类继承,从两个(如上面的例子),或无。
现在,假设该框架支持许多预先建立一个处理程序:
class LettersHandler{ ... }
class NumbersHandler{ ... }
class SymbolsHandler{ ... }
etc...
如果编程语言支持多重继承,程序员可以从该框架提供一个或多个类继承来处理特定的文件(根据文件中包含的标签)。
现在,我的问题是:
什么是实现上述情况,如果编程语言不支持多重继承的最好方式,但只支持单继承?
有没有一种简单的方法来使用多重继承?
我读过多继承通常被认为是不好的做法,但我真的不明白如何实现上述情况而不使用它。