IBusinessInfo obj=new BusinessInfoOperator();
IBusinessInfo是个接口类,BusinessInfoOperator是继承IBusinessInfo接口的类,
请问:
IBusinessInfo obj=new BusinessInfoOperator();我知道接口不能实例化对象,但不懂为什么要这样用?要实例化对象,直接BusinessInfoOperator obj=new BusinessInfoOperator();不就行了?干吗非要用接口呢?

解决方案 »

  1.   

    看一下这个
    http://allenlooplee.cnblogs.com/archive/2005/11/24/283578.html就知道这种实例化接口的做法很不好,或者说我认为很不好。
      

  2.   

    to IBusinessInfo obj=new BusinessInfoOperator();这样就只能用接口提供的方法和属性了,而不能用BusinessInfoOperator所提供的一些其他方法和属性。
      

  3.   

    我是菜鸟,感觉一句话回答的我不是很明白,mobydick(敌伯威|我排著队拿著爱的号码牌) 地回答不错
      

  4.   

    IBusinessInfo 是个接口
    举例来说,IBusinessInfo 中有个方法do()Interface IBusinessInfo
    {
       public void do();
    }BusinessInfoOperator继承自IBusinessInfo
    那么就必须实现do方法
    class BusinessInfoDBOperator :IBusinessInfo
    {
      public void do()
      {
         //把数据更新到数据库的逻辑
      }
    }好了,在主程序中,我可以定义一个方法:
    public void DoBusiness(IBusinessInfo iBf)
    {
       iBf.do();
    }然后
    你在一个模块里实现:IBusinessInfo iBf =new BusinessInfoDBOperator();
    在另一个模块调用:DoBusiness(iBf);程序正常运行,老板很高兴,可以不用加班了.
    地2天,老板说,有时要直接打印而不需要写入数据库,能不能实现这个功能,虽然其实你心里面很不爽,但是还是要写.所以新添了一个
    BusinessInfoPrintOperator:IBusinessInfo()
    {
      do
      {
         //实现打印的逻辑
      }
    }然后不需要改动DoBusiness ,直接IBusinessInfo Ibf =new BusinessInfoPrintOperator()
    然后抛给DoBuisness所在的模块就可以了.以后老板又说能不能在弄到传真机上,那么你只需再继承出一个实现do方法的class就解决了.
      

  5.   

    bearocean(helloworld) ( )说得很详细,我想我懂了,看了mobydick(敌伯威|我排著队拿著爱的号码牌) 和bearocean(helloworld)的详细回答,再看其他的,就能理解了,谢谢各位!!