【51CTO快译】现代的面向对象语言源自C++的特点之一是使用接口。一个接口是一个类,它没有具体的实现过程,只提供一个用来访问其资源的接口。(51CTO编辑:有关面向对象语言的更多特点,可以参考面向对象的思维过程,以及面向对象编程中类设计的几个原则一文)
每个接口需要用一些具体的类来实现,但优点是,使得实现细节可以可容易地独立出来。因此,你不必同时担心实现和接口问题。
接口可以帮助我不断建立易于测试、修改、而且不依赖于具体类的软件。接口可能不是最***的面向对象编程,但它在编程、集体的类之上提供了众多的优势。
◆接口是你和你的其他应用程序之间的一项合约。该合约由编译器保证,因此无法在不改变接口的情况下改变你的类中的服务。
◆创建一个接口可以让你好好思考你的类需要给客户提供哪些功能。建立接口的正规步骤需要你考虑什么是类中必不可少的,什么是可选的。删除那些并不重要,然后你将拥有一个坚实的基础。
◆接口可以混合。所以即使你想要的所有功能并没有在一个接口中呈现,你也不必担心。你可以随时添加额外的接口,来为具体用例提供所需的方法。使用接口,在建立新功能时,你不会觉得像使用具体类那样受到限制。接口可以随时混合和匹配。
◆接口让软件测试更容易。由于没有被束缚在具体的实现过程上,你可以通过定义你自己的具体的类,来自由更改测试类所使用的代码。这就会更加模块化,测试结果更加清晰。
接口的缺点
接口的缺点非常少,唯一主要的缺点是,你需要花费一些精力来维护一个独立的实体。但是,现代编程工具使这件事变得很容易,因此它不再像从前那么困难。
使用接口的另一个需要强调的方面是,C++中使用虚指针的实现问题。但是,你必须注意,现代面向对象语言是基于虚拟机的。这种语言把每种方法描述为一个虚指针,除非系统决定内联方法(在这种情况下,不存在实现问题)。除非你有非常重要的软件(在这种情况下,你可能需要使用的C/ C + +)你不应该担心这种实现问题,因为虚拟机会很好地解决这种问题。如果对虚拟机的概念仍然不很了解,可以参考详细介绍什么是Java虚拟机一文。
结论
接口是一个现代化的机制,用来改进软件设计。尽管这样,接口还没有被大多数开发人员充分利用。我们应该利用接口作为应用程序各个部分之间默认的通信方法,只在建立对象(工厂方法)以及向包中加入类时使用具体类。
原文:When in Doubt, Create an Interface by Carlos Oliveira
【相关阅读】