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

时间:2009-11-15 01:14:55

标签: java methods wrapper

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

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
}

6 个答案:

答案 0 :(得分:12)

包装器方法是adapterfaçade;它为现有方法提供了另一种接口。

您被要求编写一个façade(facade) - 为不需要指定高值和低值的客户端提供更简单的界面。

答案 1 :(得分:8)

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

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

  1. 它以“专家”方法可以理解的方式构建问题。
  2. 问“专家”方法问题
  3. 答案很简单,可以为调用者提供正确的格式。
  4. 在您的情况下,“专家”方法为recursiveSort(),您的sortCoordsByZ()方法必须使用正确的参数调用recursiveSort(),然后可能会先回答问题归还它。

答案 2 :(得分:7)

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

答案 3 :(得分:3)

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

答案 4 :(得分:3)

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

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

答案 5 :(得分:1)

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

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

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

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

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