【问题标题】:Using wrapper classes - java使用包装类 - java
【发布时间】:2015-06-15 15:16:14
【问题描述】:

我在这里描述了我之前的问题: Java - how can I loop methods with same name but different parameters

我有与此相关的问题。

有没有例子——一个使用包装类的好例子?

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... 
     }
}

但这让我感到奇怪。 wrapper 是正确的名称吗?是有效的包装类吗?从我读到的包装类用于原语将它们用作对象,那么它不应该被命名为不同的吗?还是我错了?

我需要以相同的方式调用它,所以我可以循环它,所以重载不是答案。给定类工作正常 - 我只是认为使用包装器名称是否正确?

【问题讨论】:

  • 恕我直言,到目前为止,类名没有任何意义。其他开发人员如何理解该类的目的?它有三个字段,它们是如何关联的?
  • 它包含所有验证器所需的所有参数

标签: java


【解决方案1】:

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

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

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

【讨论】:

  • 那应该怎么调用呢?它需要从表单发送的部分以及我在主进程中创建的一些变量。
  • ` private int numberOfFiles;私有字符串 pathToWrite;私人部分;私人名单附件; ` attachments.add(new Zalaczniki(attachmentWrapper.getPathToWrite() + File.separator + fileName)); for (Part part : fileParts) { attachmentWrapper.setPart(part);` ` numberOfFiles = numberOfFiles + 1; attachmentWrapper.setNumberOfFiles(numberOfFiles);`它全部来自代码的不同部分`
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 2015-01-14
  • 1970-01-01
相关资源
最近更新 更多