我很想知道 Wrapper 和图书馆之间的区别。
从我在网上找到的内容来看,我真的看不出两者之间有什么重大区别。我经常遇到“Wrapper Library”或“Library Wrapper”,它看起来好像它们基本上是同一个。
但是,我的假设是库是精心调整的函数的集合,它们提供了完成不属于该语言核心功能的任务的方法。
Wrapper 是一个外观,可让您更轻松,更快捷地在程序中设置某些功能,从而减少输入操作。
这两个描述只是让它看起来像是对我不同的措辞是一样的..所以我来找你Stackoverflow,
您对Wrappers / Libraries有何看法和专业观点?
旁注/背景
这个问题源自我一个月前完成的C ++设计模式课程:
在我的C ++软件设计模式类中,我们必须创建一个套接字库,它接受WinSock库并在其上创建一个Thin(或厚,我们的选择)Wrapper。然后,我们必须创建两个使用我们的库的应用程序,这样我们就不必重复WinSock库的基本设置和繁琐的编码。我最终获得了100%的项目,但希望更多地了解实际的差异或相似之处,因为我希望在个人时间内扩展这个项目。
答案 0 :(得分:6)
总的来说,我个人认为是这样的:
现在很明显,有时两者之间的区别非常清晰,而且线条模糊的时候,所以在后一种情况下,某些主观性可能是不可避免的。换句话说,你认为是一种实现和你认为只是一种抽象偶尔会有些模棱两可。
例如,包装器可以具有参数检查功能或更好的状态簿记,而底层系统没有。如果这主要是为了提供抽象的正确性,那么它仍然倾向于包装器的一面。如果添加了一些真正的新功能,它将开始成为一个库,可以称为包装库。
另一方面,完全成熟的库可能根本不是包装器,因为它可以利用底层系统提供某些功能,但不会在任何干净的接口中暴露任何相当大的底层系统部分(除了它添加的特定功能)。这将被称为库,但很可能它不会被称为包装器。
(我应该澄清一下,我所说的是我对这个问题的总体看法,而不是C ++的具体问题。如果C ++世界对这些术语的定义不那么模糊,请纠正我。)< / em>的
答案 1 :(得分:0)
Library是任何类型功能的通用实现。 Wrapper是一个特定的实现,旨在为现有库提供抽象。