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?
答案 0 :(得分:0)
在这种情况下,包装器不是一个好选择。通常包装器用于包装一些不同的东西,所以它们看起来很相似,即使它们完全不同。例如,您可能有来自不同来源的一些数据流 - 文件,http连接,资源。所有你关心的是从这个来源读取数据。因此,您编写的包装器可以从任何源读取并只传递数据。
包装不应与常用功能混合使用。在上面的例子中,所有3个源可以被视为流,因此自然解决方案将它们全部用作流。但即使最终内部封装器被用作流,它们仍然需要不同的处理和动作来与它们一起工作。包装器会照顾它。你不关心什么是包裹的东西 - 你只是以包装提供的常见方式使用这个包裹的东西。
在您的示例中,我们有常规对象,它封装了一些数据和功能。这是常规的OOP方法。调用它Wrapper只会误导以后可能使用此代码的用户。