之前写了一篇:Java中的多态浅谈 里面简单说了多态。
今天整一个js版的多态:
var makeSound = function( animal ){
animal.sound();
}
var Duck = function(){}
Duck.prototype.sound = function(){
alert("嘎嘎嘎……");
}
var Sheep = function(){}
Sheep.prototype.sound = function(){
alert("咩咩咩……");
}
makeSound( new Duck() ); //嘎嘎嘎……
makeSound( new Sheep() ); //咩咩咩……
同样的方法,传入的 动物 对象不同,发出不同的叫声,实现了“多种形态”的变化。
Martin Fowler 在《重构:改善既有代码的设计》里写到:
多态最根本的好处在于,你不必再向对象询问“你是什么类型”而后根据得到的答案调用对象的某个行为。你只管调用该行为就是了,其它的一切多态机制都为你安排妥当。
多态帮助我们把 过程化的条件分支 转换为了 对象的多态性,从而消除了条件分支。
(完)
想要打赏,请点击这里