js趣玩:多态

48 浏览发布于 作者 zouyang (欢迎转载-请注明出处链接)留下评论分享按钮

之前写了一篇: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 在《重构:改善既有代码的设计》里写到:

多态最根本的好处在于,你不必再向对象询问“你是什么类型”而后根据得到的答案调用对象的某个行为。你只管调用该行为就是了,其它的一切多态机制都为你安排妥当。

多态帮助我们把 过程化的条件分支 转换为了 对象的多态性,从而消除了条件分支。

(完)

想要打赏,请点击这里

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注