我遇到软件开发人员使用创建其他类或API的Wrappers或甚至某些代码的术语,这是经验丰富的软件程序员使用的术语
所以任何想法是什么意思呢;
例如一个简单的问题; 我们有两种类型的数组排序技术,让我们为它创建一个包装器
以上是一个非常简单的例子
"包装"这个词被大量抛出.通常,它用于描述包含另一个类的实例但不直接公开该实例的类.包装器的主要目的是提供一种"不同"的方式来使用包装对象(也许包装器提供了一个更简单的接口,或者添加了一些功能).
在描述经典设计模式时,也可以使用"包装器"一词.
包装对象以向其提供简化的界面通常被描述为"Facade"模式.包装纸是外立面.
有时您可能有一个适合特定接口的类,但您无法更改它的代码以使其符合该接口.您可以为该类创建一个实现接口的包装器,但它将大多数调用指向包装对象.这是'适配器'模式.包装器是适配器.
您描述的实例,其中有两个可以使用不同算法进行数组排序的类听起来像'策略'模式,您可以在其中提供对某个对象执行操作的方法,但用于该操作的算法可能会有所不同,具体取决于在该对象的结构上.
例如,对于长度小于100的数组,您的排序算法之一可能很好,但是性能可能是它的问题.另一种算法可能适用于较大的阵列.您可以为支持排序操作的两种算法创建"包装器",但根据数组长度决定使用哪种算法.
绝大多数包装器都存在以隐藏某种复杂性.
ipad做了什么,iPhone不做?除了一个有更大的屏幕外,它们基本上不是一回事吗?Ipad"包装"了iphone:这意味着你拥有iphone本身的所有优点,并拥有更大屏幕的优势等.但从根本上说,在ipad中,有一款Iphone.唯一不同的是外观:你有一个更大的屏幕.
它与"对象"完全相同.
.......内部有所有好东西,但外观不同.一个不同的包装器.
"Wrappers可能会暴露出与底层对象不同的特性"(简单说明下面的含义):
有时,包装器可能会限制您可以访问的内容.例如,即使埋在其中的Iphone具有该功能,ipad也可能限制您拨打电话的能力.
想想自动驾驶汽车和手动汽车.在幕后,在自动驾驶汽车中,有一些工程机制会自动为您改变档位,但从根本上说,在汽车表面下,汽车仍然是一辆手动汽车.换句话说,汽车的自动功能"包裹"了汽车的手动功能.如果你想在自动汽车中自己手动更换齿轮 - 你根本做不到.在自动车中,"不暴露"变换齿轮的能力.但它暴露在手动车中.虽然这个比喻有点紧张,但我希望你能看到我所得到的东西.
只是你编写了一些易于使用的代码来隐藏下面代码的复杂性.当您需要从更高级别的语言调用某些低级API并且希望隐藏所有"丑陋"代码时,它尤其有用.
编辑:你可以在这两篇wiki文章中找到更多相关信息:库和函数