无法逃脱的if...else...

在许多时候,我们经常会碰到这样的问题:
根据给定的条件来生成不同的对象,我一般是这样:

class  BaseClass{
   
public   abstract   void  Do();
}
class  Class1 : BaseClass{
  
public   override   void  Do(){
    dot.gifdot.gif
  }
}
class  Class2 : BaseClass{
   
public   override   void  Do(){
      dot.gif.
   }
}

再做一个工厂类根据不同的条件生成不同的对象:

class  Factory{
  
public   static  BaseClass Create(){
 
// get conditons
  if (conditon  ==   1 ){
        
return   new  Class1();
     }
     
else   if (condition  ==   2 ){
        
return   new  Class2();
     }
}

用的时候可以这样:

class  Client{
   
public   void  Process(){
      BaseClass bc 
=  Factory.Create();
      bc.Do();
   }
}

但是有人在看了这段代码之后,说里面有if...else...,而面向对象的编程中可以利用设计模式来替换掉if...else...的代码,而代码中出现if...else...则意味着Bad Smell。可我不明白如何来替换这段代码,用抽象工厂吗?具体的工厂类是可以直接生成产品了,但是对条件的判断代码又转移到到底采用哪个具体工厂上去。
有人有好办法吗?

 

转载于:https://www.cnblogs.com/linkin/archive/2005/08/20/219121.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值