Java “是什么意思?”;实现一个包装器方法";?

Java “是什么意思?”;实现一个包装器方法";?,java,methods,wrapper,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 v

我被分配了一个编程任务,我要做的事情之一就是实现一个方法,这个方法是一个包装器方法,它依赖于另一个方法来将坐标从最低到最高排序。我不确定实现包装器方法到底意味着什么

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
}
它包装了另一个方法:)可能它添加了一些额外的参数,比如案例中的lo和hi的初始值,并充当排序的入口点;它为现有方法提供了一个替代接口


您被要求编写一个facade(facade)——为不需要指定高值和低值的客户端提供一个更简单的接口。

当您实现包装器方法时,您实际上是在编写现有方法的变体,通常是因为现有方法不满足您当前的需求。原始方法可能太复杂(参数太多),或者它可能无法完成所需的工作,这意味着您必须编写一个包装器(或重载),以完成原始方法无法完成的额外工作。通常,在编写包装器时,无论它做什么,您都会利用原始函数,并用包装器填补空白。

您现在正在充当包装器方法,询问有关堆栈溢出的赋值问题

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

  • 它以一种“专家”方法能够理解的方式构建问题
  • 它向“专家”方法提出了这个问题
  • 将答案以正确的格式呈现给调用者是很容易的

  • 在您的情况下,“专家”方法是
    recursiveSort()
    ,您的
    sortCoordsByZ()
    方法必须使用正确的参数调用
    recursiveSort()
    ,然后可能在返回答案之前对其进行处理。

    在这种情况下,我不就需要在“按z排序”中输入这些吗方法,如果它通过一个名为coords的数组,该数组的所有插槽都已填满

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

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

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

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

    现在,当您想要导入新库时,所有抽象的好处就来了。不必重写整个应用程序的每个调用,只需重写包装器方法即可,包装器方法应该是它自己的类。现在,在包装器类中更改1方法将更新使用该方法的整个应用程序。(有关示例,请参见MVC4.NETHTML帮助器方法)


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

    是的,这正是你应该做的。@Dougman-不清楚这是否是家庭作业(我在工作中得到“编程作业”),所以除非提问者另有说明,否则我将删除标签。看见