美文网首页
JavaScript和Java设计模式对比

JavaScript和Java设计模式对比

作者: doubimonkey | 来源:发表于2016-11-18 14:55 被阅读0次

最近在学习js,因为是从java转过来的,所以有时候难免和java对比。本文就从两个语言对设计模式的应用来分析一下两个语言的优劣性。

多态性

多态性的意思是,你无需关注调用的是哪个对象,当你发出一个指令时,对象会自己根据指令,做出不同的动作。
比如,我想让不同的动物发出不同的叫声,在java中一般是通过继承来实现

public abstract class Animal{
     abstract void sound();
}
public class Chicken extens Animal{
    public void sound(){
      sout("咯咯咯");
    }
}
public class Duck extens Animal{
    public void sound(){
      sout("嘎嘎嘎");
    }
}

public static void main(String args[]){
  Aninal chicken = new Chicken();
  Animal duck = new Duck();
  chicken.sound(); //咯咯咯
  duck.sound();  //嘎嘎嘎
}

用js的话,有几种实现方式,我们来分析一下
方法一(非多态)

var Duck = function () {};
var Chicken = function () {};
var makeSound = function ( animal ) {
    if( animal instanceof Duck){
        console.log("嘎嘎嘎");    
    }else if( animal instanceof Chicken){
        console.log("咯咯咯");    
    }
};
makeSound(new Duck());
makeSound(new Chicken());

PS: instanof 的用法请参看官方api文档
可以看到,在这个例子中,并没有使用到多态,调用不同的方法,需要判断不同的类型,这显然是不方便的,其实我们可以修改成下面的样子:
方法二

var Duck = function () {
   this.makeSound = function () {
        console.log("嘎嘎嘎");    
  }
};
var Chicken = function () {
   this.makeSound = function () {
        console.log("咯咯咯");    
  }
};
function sound(animal) {
    animal.makeSound();
}
sound(new Duck());
sound(new Chicken());

相关文章

网友评论

      本文标题:JavaScript和Java设计模式对比

      本文链接:https://www.haomeiwen.com/subject/bmtspttx.html