何为面向接口编程

[size=large] 都在提倡面向接口编程,也看到太多的实际代码中一个Interface,一个Implement。也想说几句。

定义上接口包含两种含义:抽象概念上的接口、具体面向对象语言中的接口(例如Java的Interface),前者比后者范围更广,在众多的理论书籍中,更多的是指前者,我们看书时要分清概念。以下前者简称“接口”,后者简称“java接口”或“interface”。

首先来看看Java中Interface的作用:Java接口的作用是标志类的类别,相同类型的类可以归于同一个Java接口(多个类实现一个Java接口),并可以解决单继承的问题(一个类可以实现多个Java接口);

提面向接口编程,不能只看到好处,以下是在使用面向接口编程时要考虑的风险:
1、接口是有成本的,并不是接口数量越多软件成本就会越少,只有需要接口带来的灵活性时才值得为它付出成本。很多时候并不提前知道是否需要接口带来的灵活性时,最好是在真正需要时才引入接口。
2、如果采用面向对象编程,那么不得不提的就是对接口本身的修改时不被鼓励的。(例如:一旦在增加或修改Java接口,就必须同时改变所有的实现类。)(另:Java接口是否要抛出异常,是否要对异常封装,都是一个话题)

那么何为面向接口编程,相对于一定在开发规范中要求使用java接口,更重要的是真正的释义接口(参见DDD),即设计的方法要使大家看到它就能理解是“做什么”,而不是“怎么做”。(例如:有一个方法Map execAccount (Map context) {……},传递的参数、返回值是一个map,其实根本看不到要传递什么,会返回什么,还是必须去看实现才能了解,如果这样,那提炼出interface也是没有太多意义的。)

如果我们当前沿用老的开发模式(瀑布模式开发,按功能模块分派任务,implement和interface都是一个人负责,且不是敏捷开发,测试驱动开发,那么我们还是可以直接写implement,当真正需要interface的灵活性时,再通过重构extract interface,是否可行?[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值