WRAPPER在编程中在哪里以及如何使用WRAPPER,它有什么帮助?

我遇到了软件开发人员使用创build其他类或API甚至一些代码包装的术语,这是一个有经验的软件程序员

所以不知道它是什么意思,

例如一个简单的问题; 我们有两种types的数组sorting技术,可以为它创build一个包装

以上是一个非常简单的例子

“包装”这个术语被大量抛出。 一般来说,它用于描述一个包含另一个类的实例但不直接公开该实例的类。 包装的主要目的是提供一种“不同的”方式来使用包装对象(也许包装提供了一个更简单的接口,或增加了一些function)。

描述经典devise模式时,也可以使用“包装器”这个词。

包装对象以提供简化的界面通常被描述为“外观”模式。 包装是正面。

有时你可能有一个适合特定界面的类,但是你不能改变它的代码来使它符合那个界面。 您可以为实现该接口的类创build一个包装,但将大部分调用指向包装对象。 这是“适配器”模式。 包装是适配器。

你描述的实例,你有两个可以使用不同的algorithm进行数组sorting的类,这听起来像是'Strategy'模式,在这里你提供了一个对某个对象执行操作的方法,但是用于该操作的algorithm可能会有所不同在那个对象的结构上。

例如,对于长度小于100的数组,sortingalgorithm之一可能很好,但是性能可能会成为问题。 另一种algorithm可能适用于更大的arrays。 您可以为支持sorting操作的两种algorithm创build一个“包装器”,但根据数组长度决定使用哪种algorithm。

绝大多数的包装存在隐藏某种复杂性。

这些解释大部分是技术性的,杀死我的大脑细胞:简单的解释:

什么是包装?

当苹果的ipad出来时,我感到困惑。 ipad做了什么,iPhone不做? 他们不是基本上是一样的东西,除了有一个更大的屏幕? 换句话说,iPad就像一个Iphone,除了它有一个更大的屏幕 – Ipad“包装”的iPhone。 这意味着你有ipad本身的所有好处,并具有更大的屏幕等的好处。

一个iphone是Ipad里面唯一的东西。 Ipad从字面上包装了Iphone。除了不能用Ipad拨打电话,因为拨打电话的能力还没有被“暴露”。苹果公司希望你购买X2产品不只是一个:P

这与“对象”是完全一样的。

………里面有所有相同的好东西,但不同的外观。 一个不同的包装。

包装可能会暴露与底层对象不同的function

有时包装可能会限制你可以访问的东西。 例如,ipad可能会限制您拨打电话的能力,即使埋入其中的Iphone也具有此function。

另一个例子

想想一辆自动汽车和一辆手动汽车。 在幕后,在一辆自动驾驶汽车中,有一些工程机构可以自动为您换挡,但从根本上来说,车底下依然是手动车。 换句话说,汽车的自动function“包装”了汽车的手动function。 如果您想在自动驾驶汽车中手动更换齿轮 – 您根本无法做到。 在自动驾驶汽车中换档的能力“没有暴露”。 但它是在手动车上曝光的。 当然,这个比喻有点紧张,但是我希望你能看到我在做什么。

现在把这个解释和我上面的解释结合起来,我想你会有更多的运气来理解正在发生的事情! 任何问题,请免费评论,我会尽力为你清除:)

这只是你写了一些易于使用的代码来隐藏下面的代码的复杂性。 当你需要从更高级别的语言中调用一些低级别的API,并且想要隐藏所有“丑陋”的代码时,这是特别有用的。

编辑:您可以在这两个wiki文章中find更多关于它的信息: 库和函数

包装函数,主要目的是调用第二个函数的函数

包装是一些代码,创build内部调用一些API而不改变实际的API。

这个例子是Facebook的Facebook C#SDK的发布。 SDK实际上是一个包装,因为它只允许你调用它的底层平台而不给你具体的方法和类。 另一方面, Facebook Developer Toolkit是其完整的API。

有很多“包装”的例子,这个词有时可以互换使用。 以下是一些想到的例子:

DLL包装

在过去,我已经创build了一个.NET DLL的COM包装器,以便在早期的应用程序中使用.NET的高级function,这些应用程序可以理解COM但不懂.NET。

对象包装器(Java)

在Java中,在java.lang包中提供了一个类来为八种基本types提供对象方法。 Java中的所有基本包装类都是不可变的。 所以当需要Object时, Wrapper类用来表示原始值。