当前位置: 代码迷 >> Web前端 >> 使用面向对象的方式写代码的一个有关问题
  详细解决方案

使用面向对象的方式写代码的一个有关问题

热度:257   发布时间:2012-09-24 13:49:41.0
使用面向对象的方式写代码的一个问题
假设我们创建了一个对象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这个父类是不是多余的?


我想这个问题的重点应该是:我们想要的代码是一个思路清晰完整的代码段,还是一个代码重复性少但是掺杂着各种类型判断的代码段.

事实上,我们应该是创建不同的动物实例,它们有相同的方法,而不是在动物这个父类中无限的增加动物的类型的处理语句

我想,一段代码更多的应该是一步一步的表达程序的逻辑,而不是简单的达到统一.以减少代码的修改量