首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小型工程接口的必要性

小型工程接口的必要性
EN

Software Engineering用户
提问于 2014-04-04 14:42:32
回答 3查看 628关注 0票数 1

是否有必要为小型项目使用接口?我在一家为客户编写小自定义应用程序的商店工作,主要是数据操作。我大部分是自学的,但在大学里我也上过一些编程课。我一直在尝试将更多的OO概念应用到我的编码实践中,但在我所做的工作中,我真的看不到对接口的需求。到目前为止,我最大的项目大约有10节课。

小项目/应用程序是否需要接口,还是只适用于大型软件系统?

编辑:这不是复制。我问的是在小型项目中一般使用接口,而不是在只有一个实现时使用接口.

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2014-04-04 15:00:29

简短回答:不。

很长的答案:在使用类和接口之间有一个权衡。接口实现可以在运行时交换。这很好,因为它是灵活的-但这也意味着有人可以编码一个坏的IFoo,并把它传递给您的一个功能,否则就能正常工作。对于一个具体的(和sealed/final) Foo,只有一个实现,所以如果正确的话,它总是工作的。

接口的另一个缺点是它们无法检查该接口其他成员的实现细节。Foo方法可以检查其他Foos的私有变量,但是IFoos只能查看其他IFoos的接口,这可以限制某些优化,因此如果只有一个接口实现,它可能会伤害您而不会带来任何好处。

不幸的是,主流OOP语言并没有提供一种交换类实现的方法。理想情况下,您可以有多个Foo实现,并在编译时从中选择一个。但是,在使用IDE之后,从类中提取接口并不难。

如果您不需要在同一个程序中处理多种类型的Foos,就不需要在界面上添加额外的间接层。即使在同一个程序中确实需要多种类型的Foos,也不一定需要一个接口。您可以有一个带有私有构造函数的抽象基类,并将有限数量的Foos类型实现为static final内部子类。另见如何用类似C或Java的语言编码代数数据类型

当您不想限制在运行时可用的可能实现的数量时,接口就会发光。

编辑:有关权衡的更详细解释,请参见重新认识数据抽象

票数 1
EN

Software Engineering用户

发布于 2014-04-04 17:42:20

即使您只有一个小项目,如果您想要进行单元测试,您也可能希望为您的服务和依赖关系使用接口。这样,您就可以在单元测试中注入那些模拟实现。

如果您没有进行单元测试,那么接口还有其他常见用途,如策略模式。

票数 4
EN

Software Engineering用户

发布于 2014-04-04 18:42:58

定义“必要”

如果两个类必须实现相同的接口才能被某个对象互换使用,那么使用接口在技术上是必要的--尽管从公共基类继承可以避免这种情况(例如,对于不支持接口的语言)。

这个项目的规模无关紧要。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/234837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档