IBusinessInfo obj=new BusinessInfoOperator();
IBusinessInfo是个接口类,BusinessInfoOperator是继承IBusinessInfo接口的类,
请问:
IBusinessInfo obj=new BusinessInfoOperator();我知道接口不能实例化对象,但不懂为什么要这样用?要实例化对象,直接BusinessInfoOperator obj=new BusinessInfoOperator();不就行了?干吗非要用接口呢?
IBusinessInfo是个接口类,BusinessInfoOperator是继承IBusinessInfo接口的类,
请问:
IBusinessInfo obj=new BusinessInfoOperator();我知道接口不能实例化对象,但不懂为什么要这样用?要实例化对象,直接BusinessInfoOperator obj=new BusinessInfoOperator();不就行了?干吗非要用接口呢?
http://allenlooplee.cnblogs.com/archive/2005/11/24/283578.html就知道这种实例化接口的做法很不好,或者说我认为很不好。
举例来说,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就解决了.