关于Interface与纯虚函数在设计中的区别

因为之前一直做C++,没有特别研究过Java、C#中的Interface概念。

在看设计模式的时候,也弄得一知半解的。

 

今天在做GDE-X过程中,我想定义一个类似于 c++的纯虚函数的,派生类必须实现的函数。然后我发现在C#中,使用abstract(纯虚函数)和Interface(接口)都可以实现这个概念,于是甚感迷惑,请教了一下同事,终于弄懂了设计上的不同概念。

 

如果光从实现上来说,在C#中纯虚函数和接口实现的功能一样 —— 定义抽象接口,派生类必须实现。

 

不同的概念是,接口是定义一组方法,它比纯虚函数更加抽象,是对于行为的抽象。

即使没有关系的对象也可能具有同样的行为特性,那么将行为抽象到“接口”这个概念中,在设计上将大大增加灵活性。

 

如果拘泥于使用基类的纯虚函数,则会增加设计的复杂性,而且使用起来也不灵活。

那么什么情况下使用纯虚函数呢?

自己总结如下:

1. 确定该行为只被自己的派生类使用,不会其他地方有复用的必要。

2. 不构成“一组”行为,没必要单独抽出去,增加系统的复杂度。

 

所以在设计中如果发现有“一组”纯虚函数,还是单独抽出去构成接口比较好。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值