“实现包装器方法”是什么意思?

我得到了一个编程任务,我要做的一件事是实现方法,它是一个包装器方法,依赖于另一种方法来从最低到最高的坐标排序。 我不确定实现包装器方法的确切含义。

static void sortCoordsByZ(double[][] coords) { //implement the wrapper method for the recursive sort method. all work is done the recursive sort method } static void recursiveSort(double[][] coords, int lo, int hi) { //recursive sort method } 

包装器方法是适配器或外观 ; 它为现有方法提供了另一种接口。

您被要求编写外观(外观) – 为不需要指定高值和低值的客户端提供更简单的界面。

您现在通过在Stack Overflow上询问您的作业问题来充当包装器方法!

包装器方法通过询问“专家”方法来回答问题。 一般来说,它做了三件事:

  1. 它以“专家”方法可以理解它的方式构建问题。
  2. 它问“专家”方法的问题
  3. 它可以轻松地为调用者提供正确格式的答案。

在您的情况下,“expert”方法是recursiveSort() ,并且您的sortCoordsByZ()方法将必须使用正确的参数调用recursiveSort() ,然后可能在返回之前对答案执行某些操作。

实现包装器方法时,您实际上是在编写现有方法的变体,通常是因为现有方法不能满足您当前的要求。 原始方法可能过于复杂(参数太多),或者它可能不完全执行所需的操作,这意味着您必须编写一个包装器(或重载)来完成原始方法所没有的额外工作。 通常在编写包装器时,您仍将利用原始函数进行任何操作,并使用包装器填充空白。

它包含了另一种方法:)可能它会添加一些额外的参数,比如你的case中的lo和hi的初始值,并作为排序的入口点。

在这种情况下,如果它通过一个名为coords的arrays填充所有的插槽,那么这不应该是我需要放入“sort by z”方法吗?

 recursiveSort(coords, 0, coords.length-1); 

包装方法可用于抽象,标准化和重构

例如,如果您导入一个特殊帮助方法库并在整个应用程序中使用它们,那么稍后决定切换到一个不同的库,它将为您提供更多function,然后您必须重写调用以前库方法的每行代码。调用新的库方法。 随着应用程序达到数十和数十万行,这是一项艰巨的任务。 当软件获得许可时会更频繁地发生这种情况,然后当软件过期时会选择新选项。

要解决此问题,您可以在自己的方法中包装所有Helper方法。 这些方法只是一行,可以在导入的库中调用方法。 您可以在整个应用程序中调用所有包装器方法,而不是直接调用导入的库。

现在,当您想要导入新库时,所有抽象的好处都会出现。 而不是通过应用程序重写每个调用,您只需重写应该是它自己的类的包装器方法。 现在,在包装类中更改1方法会更新使用该方法的整个应用程序。 (有关示例,请参阅MVC4 .NET HTML Helper方法)

在标准化的主题上,包装器可用于为创建对象时手动设置的许多内容设置默认值。 但是现在如果将它们设置在包装器中,则每次调用原始方法时都不必设置它们。 例如,您可以在Gridview包装器中设置网格视图的尺寸,现在当您在应用程序中调用包装器方法时,所有网格视图都具有相同的尺寸,并且需要在整个应用程序中维护更少的代码行; 也完成了重构。