java - 如何设计类及其方法

标签 java architecture

多个客户端发送写入文件的请求并期望响应成功或失败。我想简要描述一下服务器端所做的工作。

  1. 通过 servlet 类处理请求并调用另一个类进行下一步。
  2. FileWriter 类被调用,该类执行以下文件写入过程。
    a). 在上下文中创建目录并在目录中写入一个*.txt 文件
    b). 将一些文件从上下文的现有目录复制到新创建的目录。
    c).压缩(*.zip)这个目录

    类 FileWriter {

    public synchronized writeFile(String contextPath) {
          creates a directory & new file under context
    
          copyFiles(path_to_directory);
    }
    
    private void copyFiles(String path_to_directory){
       copies files to /contextPath/directory/... from existingDirectory;  
    
     compressDir( Directory_path ); // to compress the file
     }
    
    private void compressDir(String Directory_path) {
           compress the newly created directory
     }
    

正如您在上面的类中看到的,有一个方法是synchronized,两个方法是private。只有 synchrnized 方法是从 servlet 类 调用的,其他方法是从该方法内部调用的。 那么这是处理多客户端请求的良好/标准方式吗?

或者我应该直接从 servlet 类 调用每个方法。请纠正我并建议一种更好的方法来实现该类(class)。

@Edit : req1 来创建目录和文件,例如 context/directory_1/file_1.txt

同时 req2 来检查 directory_1 是否已经存在,因此它创建 directory_2 例如context/directory_2/file_1.txt

现在第二步是将文件从上下文复制到新创建的目录。让我告诉你 directory_1directory_2 无关 所有新创建的目录都从 common_directory 复制文件,例如`context/common_directory/... 到 context/directory_1, context/directory_2'

第三步是压缩目录:例如directory_1.zip, directory_2.zip

最佳答案

两个建议:

  1. 不要将类命名为与 JDK 中已经存在的类相同的名称。

  2. 不要以这种方式链接方法调用,创建单一用途的方法,然后 将它们以一种方式组合在一起,清楚地表明您的意图。

    class FileProcessor/*FileUtil whatever,但不是 FileWriter */{

    public synchronized writeFile(String contextPath) { //在上下文中创建目录和新文件

    复制文件(上下文路径); 压缩目录(上下文路径);//压缩文件

    //将文件从 existingDirectory 复制到/contextPath/directory/...;
    private void copyFiles(String path_to_directory){ }

    //压缩新建目录 private void compressDir(String Directory_path) { }

关于java - 如何设计类及其方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8353910/

相关文章:

Java NIO 选择器 select() 返回 0,尽管 channel 已准备就绪

mysql - 如何平衡网页抓取的负载

C++ 从不透明指针传递私有(private)数据

asp.net-mvc - 胖模型/瘦 Controller 与服务层

java - 如何在 JSF 页面中正确声明一个对象存在于具有给定类型的 session 对象中?

java - 将 ChartPanel 添加到 jPanel 不起作用

java - Android Studio 显示不可读语言

java - 针对各种处理器架构的 native 库位置的最佳实践命名策略

c# - Service owns disposable Repository that owns disposable DbContext - Dispose IDisposables injected with Unity

architecture - 您在项目中遵循 n 层架构和关注点分离的严格程度如何?