如果某个方法else if 或 case 语句太多,
怎样通过面向对像的方法来解决这个问题呢?

解决方案 »

  1.   

    exmple:
    class base{
     public virtual Test();
    }
    class A : base{}
    class B : base{}
    class C : base{}
    //abc分别实现Test.
    base objA = new A();
    base objB = new B();
    base objC = new C();void DoTest( base obj )
    {
      obj.Test();
    }DoTest( objA );//自动调用A实现的Test();
      

  2.   

    按楼上的想法,这个是可以,
    但是:
    DoTest( objA );//自动调用A实现的Test();DoTest(..)方法,这个参数在什么情况下用objA,什么情况下用objB,objC,这也是要判断的呀。
      

  3.   

    cattleknife(解牛刀) ( ) 信誉:100老大,你说的如何解决else if问题呢??
    调用哪个方法,还是需要用else if吧?
      

  4.   

    楼主,其实这样的。能不用IF语句尽量不用,使用多态。
    但有时是不得不用的,假入你一定要判断是哪个OBJ,肯定要用到IF。
    但是有很多情况下,你是事先就传进一个已知类型的OBJ的,此时如果用多态,就可以不用IF了。
      

  5.   

    解決大量if else, case語句,多態和重載作不到的.可以用抽象工廠,在創建實例對象的時候通過反射,加載類名創建對象。
      

  6.   

    那个吃饱了撑了的出的题目?出现大量的if ... else要么是协议约定等太复杂,要么是程序设计有问题,与什么狗屁面向对象的方式有什么关系?面向对象能解决我家上网速度不快线路质量不好的问题么?
      

  7.   

    引用博客園一位朋友的文章.
    http://terrylee.cnblogs.com/archive/2005/12/13/295965.aspx
      

  8.   

    Ivony() ( ) 信誉:100  2006-06-14 17:09:00  得分: 0  
     
     
       那个吃饱了撑了的出的题目?出现大量的if ... else要么是协议约定等太复杂,要么是程序设计有问题,与什么狗屁面向对象的方式有什么关系?面向对象能解决我家上网速度不快线路质量不好的问题么?
      
     
    業務複雜的項目,這個問題是不可避免的.
      

  9.   

    各位,我是在面试的时候遇到了这个问题,我在回答时,也是用面向对像的方法,如多态来回答。但是这样回答我想是不对的。
    如果事件知道了业务,按 andy_1027(昊天) ( ) 信誉:100 的回答:
    楼主,其实这样的。能不用IF语句尽量不用,使用多态。
    但有时是不得不用的,假入你一定要判断是哪个OBJ,肯定要用到IF。
    但是有很多情况下,你是事先就传进一个已知类型的OBJ的,此时如果用多态,就可以不用IF了。
    这样是可以解释的。Kshatriya(何以解忧,惟有杜康) ( ) 信誉:99 的回答是:
    解決大量if else, case語句,多態和重載作不到的.可以用抽象工廠,在創建實例對象的時候通過反射,加載類名創建對象。我想它的回答是有道理的,但是得请他详细作答一下比较好...
      

  10.   

    使用反射是个不错的方法。最好能定义一个接口,这样就可以保证调用的函数都是相同的,那么就不用大量if else, case語句了。
      

  11.   

    应用设计模式中的工厂方法,或者抽象工厂。原理很简单,可以查找一下相关的事例。
    例:
    object FACTORY(string type)
    {
      return 你要对象
    }
    在你引用的地方调用这个方法,输入对应的type就可以了。
      

  12.   

    请参考策略(P o l i c y)模式
    定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独
    立于使用它的客户而变化。
      

  13.   

    今天在网上逛,发现一篇强文,可能这就是面试官想要的回复吧,是JAVA的http://www.jdon.com/artichect/ifelse.htm
      

  14.   

    http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/episode.aspx?newsID=1242307设计模式讲解中有详细的讲解,可以下载视频看,也可以下载教程看