// 两只动物分别为鸡鸭,当我们发出让它叫的命令时,分别输出不同声音
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