如果你是音乐作品的听众,你就有一个对脚本的参考,例如巴赫的《Fuga and Tocata》,而每个演奏它的音乐家都以自己的方式多态地演奏它。
这只是一个可能的设计的例子(在Java中)。
public interface Musician {
public void play(Work work);
}
public interface Work {
public String getScript();
}
public class FugaAndToccata implements Work {
public String getScript() {
return Bach.getFugaAndToccataScript();
}
}
public class AnnHalloway implements Musician {
public void play(Work work) {
// plays in her own style, strict, disciplined
String script = work.getScript()
}
}
public class VictorBorga implements Musician {
public void play(Work work) {
// goofing while playing with superb style
String script = work.getScript()
}
}
public class Listener {
public void main(String[] args) {
Musician musician;
if (args!=null && args.length > 0 && args[0].equals("C")) {
musician = new AnnHalloway();
} else {
musician = new TerryGilliam();
}
musician.play(new FugaAndToccata());
}
多态性是将一类对象当作父类的能力。
例如,假设有一个名为 "动物 "的类,以及一个继承自 "动物 "的名为 "狗 "的类。多态性是把任何狗的对象当作动物的对象的能力,就像这样。
通常,这指的是A类型的对象能够像B类型的对象一样行事。一些维基百科的链接可以阅读更多内容。
EDIT:修复了破损的链接。
让我们用一个比喻。对于一个给定的音乐剧本,每一个演奏它的音乐家都会在解释中给予自己的触摸。
音乐家可以用接口来抽象,音乐家所属的流派可以是一个抽象的类,它定义了一些全局性的解释规则,每个演奏的音乐家可以用一个具体的类来建模。
如果你是音乐作品的听众,你就有一个对脚本的参考,例如巴赫的《Fuga and Tocata》,而每个演奏它的音乐家都以自己的方式多态地演奏它。
这只是一个可能的设计的例子(在Java中)。