SOURCE

// 两只动物分别为鸡鸭,当我们发出让它叫的命令时,分别输出不同声音

var makeSouend = function(animal) {
  if (animal instanceof Duck) {
    console.log(111111);
  } else if (animal instanceof Chicken) {
    console.log(222222);
  }
};

var Duck = function() {};
var Chicken = function() {};

makeSouend(new Duck());
makeSouend(new Chicken());


// 上面例子的问题是如果增加新的动物,我们需要去修改makeSouend函数,修改旧代码是相对危险的,且这样会让makeSouend函数变得越来越臃肿
// 多态后的思想是将“做什么”和“ 去做以及怎样去做”分 开来,也就是将“不变的事 物”与 “可能改变的事物”分 开来。在这个故事中,动物都会叫,这是不变的,但是不同类 型的动物具体怎么叫是可变的。把不变的部分  出来,把可变的部分封装起来,这给予了我们  展程序的能 ,程序看起来是可生长的,也是符合开放 封 原则的,相对于 改代码来说, 仅仅增加代码就能完成同样的功能,这显然优 和 全得多。

var Duck = function () {};
Duck.prototype.sound = function () {
  console.log(111111);
};

var Chicken = function () {};
Chicken.prototype.sound = function () {
  console.log(2222);
};

var makeSound = function (animal) {
  animal.sound();
};

makeSound(new Duck());
makeSound(new Chicken());













console 命令行工具 X clear

                    
>
console