Js的多态性,实际上是在原型链上定义方法。成员重写原型链的方法即可。
举个栗子
逗女孩开心的方法很多,送花、送礼物、小惊喜、说走就走的旅行。用js实现如果不使用多态代码如下:
!function(){ var girl = function(xingdong){ //定义女孩 if(xingdong instanceof Flowers){ //送花 console.log("送花,很开心"); } else if(xingdong instanceof Gift){ //送礼物 console.log("送礼物,很开心"); } } var Flowers = function(){} //定义花 var Gift = function(){} //定义礼物 //执行 girl(new Flowers()); girl(new Gift()); }()
这个时候,如果有个说走就走的旅行,还需要改女孩里面的判断。开闭原则,对修改关闭对扩展开放。因为改的越多,出错的可能就越大。所以应该改为使用多态的代码:
!function(){ var girl = function(xingdong) { xingdong.xiaoguo(); }; var Flowers = function(){} Flowers.prototype.xiaoguo = function(){ console.log("送花,很开心"); } var Gift = function(){} Gift.prototype.xiaoguo = function(){ console.log("送礼物,很开心"); } girl(new Flowers()); girl(new Gift()); }()
这样如果需要修改,不用对女孩做任何的修改。符合对修改关闭,对扩展开放。比如,我现在要给他一个说走就走的旅行。
var ShuoZouJiuZou = function(){} ShuoZouJiuZou.prototype.xiaoguo = function(){ console.log("送说就走就的旅行,很开心"); } girl(new ShuoZouJiuZou());
修改越少,程序出错的可能性越少。所以尽量多使用多态这种方法。
就到这里,By~
时间: 2024-10-25 19:23:42