包装器和库之间的差异

时间:2013-06-14 17:57:41

标签: c++ design-patterns

我很想知道 Wrapper 图书馆之间的区别。

从我在网上找到的内容来看,我真的看不出两者之间有什么重大区别。我经常遇到“Wrapper Library”或“Library Wrapper”,它看起来好像它们基本上是同一个。

但是,我的假设是是精心调整的函数的集合,它们提供了完成不属于该语言核心功能的任务的方法。

Wrapper 是一个外观,可让您更轻松,更快捷地在程序中设置某些功能,从而减少输入操作。

这两个描述只是让它看起来像是对我不同的措辞是一样的..所以我来找你Stackoverflow,

您对Wrappers / Libraries有何看法和专业观点?

旁注/背景

这个问题源自我一个月前完成的C ++设计模式课程:

在我的C ++软件设计模式类中,我们必须创建一个套接字库,它接受WinSock库并在其上创建一个Thin(或厚,我们的选择)Wrapper。然后,我们必须创建两个使用我们的库的应用程序,这样我们就不必重复WinSock库的基本设置和繁琐的编码。我最终获得了100%的项目,但希望更多地了解实际的差异或相似之处,因为我希望在个人时间内扩展这个项目。

2 个答案:

答案 0 :(得分:6)

总的来说,我个人认为是这样的:

  • 通常是某些功能的实际具体实施
  • 包装主要是围绕现有功能的抽象层。它只是为了提供一个更好,更清晰的界面(或者至少有一种界面感觉它所针对的语言或技术本身更为原生)。

现在很明显,有时两者之间的区别非常清晰,而且线条模糊的时候,所以在后一种情况下,某些主观性可能是不可避免的。换句话说,你认为是一种实现你认为只是一种抽象偶尔会有些模棱两可。

例如,包装器可以具有参数检查功能或更好的状态簿记,而底层系统没有。如果这主要是为了提供抽象的正确性,那么它仍然倾向于包装器的一面。如果添加了一些真正的新功能,它将开始成为一个库,可以称为包装库。

另一方面,完全成熟的库可能根本不是包装器,因为它可以利用底层系统提供某些功能,但不会在任何干净的接口中暴露任何相当大的底层系统部分(除了它添加的特定功能)。这将被称为库,但很可能它不会被称为包装器。

(我应该澄清一下,我所说的是我对这个问题的总体看法,而不是C ++的具体问题。如果C ++世界对这些术语的定义不那么模糊,请纠正我。)< / em>的

答案 1 :(得分:0)

Library是任何类型功能的通用实现。 Wrapper是一个特定的实现,旨在为现有库提供抽象。