使用面向对象的方式写代码的一个问题假设我们创建了一个对象animalvar Animal function(type){return {s
使用面向对象的方式写代码的一个问题
假设我们创建了一个对象animal
var Animal = function(type){return { see:function(){ switch (type){ case 'dog' : var i =2; alert("dog to see"+i); break; case 'cat' : var i =2; alert("cat to see"+i); break; } }}}var mydog = new Animal("dog");
当需要增加新的动物类型的时候,又需要重新修改Animal对象,在see方法中增加新的类型.
使用这种方式编写代码是用的面向对象的方式吗?随着动物类型的增多,这个对象的see方法中的代码会越来越长.看到这么长的代码的时候,是不是很悲剧...
那么,应该怎么写,才是创建一个Animal的类,每个实例继承这个类的方法,然后这个方法的具体实现是在实例中去完成的
但是如果这样的话,那么是不是直接建立具体的实例,然后在每个实例中都使用相同的方法名see,在js中,Animal这个父类是不是多余的?
我想这个问题的重点应该是:我们想要的代码是一个思路清晰完整的代码段,还是一个代码重复性少但是掺杂着各种类型判断的代码段.
事实上,我们应该是创建不同的动物实例,它们有相同的方法,而不是在动物这个父类中无限的增加动物的类型的处理语句
我想,一段代码更多的应该是一步一步的表达程序的逻辑,而不是简单的达到统一.以减少代码的修改量