Using wrapper classes - java

时间:2015-06-15 15:16:15

标签: java

I described my previous problem here: Java - how can I loop methods with same name but different parameters

And I have question related to that.

Is given there example - a good example of using wrapper class?

class Wrapper{
  Part param1;
  File param2;
  File param3;
}

class Validator{
  void validate (Wrapper wrapper);
}


class ValidatorA extends Validate{
 void validate (Wrapper wrapper){
    //use wrapper.part... 
 }
}

class ValidatorC extends Validate{
 void validate (Wrapper wrapper){
    //use wrapper.file... 
     }
}

But it makes me wonder. Is wrapper correct name for it? Is is valid wrapper class? From what I read wrapper classes are used for primitives to use them as objects, shouldn't then it be named different? Or am I wrong?

I need it to be called same way, so I can loop over it so overloading is not the answer. Given class works fine - I just think if is it correct way to use wrapper name?

1 个答案:

答案 0 :(得分:0)

在这种情况下,包装器不是一个好选择。通常包装器用于包装一些不同的东西,所以它们看起来很相似,即使它们完全不同。例如,您可能有来自不同来源的一些数据流 - 文件,http连接,资源。所有你关心的是从这个来源读取数据。因此,您编写的包装器可以从任何源读取并只传递数据。

包装不应与常用功能混合使用。在上面的例子中,所有3个源可以被视为流,因此自然解决方案将它们全部用作流。但即使最终内部封装器被用作流,它们仍然需要不同的处理和动作来与它们一起工作。包装器会照顾它。你不关心什么是包裹的东西 - 你只是以包装提供的常见方式使用这个包裹的东西。

在您的示例中,我们有常规对象,它封装了一些数据和功能。这是常规的OOP方法。调用它Wrapper只会误导以后可能使用此代码的用户。