我想不能说是多态取代了if/switch,而是在面向对象这个环境下,多态更好的完成了if/switch的功能.
因为没有现成的代码,我就简单写一下,是一个树型组件的例子:一个树简单地分为分支和叶子,当前结点是一个分支点的时候需要调用分支对象的writer()方法,当前结点是叶子结点的时候要调用叶子对象的writer()方法.同样的方法实现了不同的功能,产生了不同的效果,这就是多态的一个应用.
代码(随便写的,主要突出多态的write方法):
public class Tree{
private Branch[] branchs;
public String write(){
for (int i=0;i<branchs.length;i++){
branchs[i].wirte();
}
}
}
class Branch{
private Leaf[] leafs;
public String write(){
for (int i=0;i<leafs.length;i++){
leafs[i].write();
}
}
}
class Leaf{
private String text="";
private String id="";
private String name="";
private String value="";
...
public String write(){
return ...LeafString...;//LeafString表示在实际树型组件中叶子结点的HTML串
}
}
上面那样的设计方式也是一种设计模式的简单实现,即组合模式
感谢 Student02370236