如何在创建对象时更改变量值?

时间:2014-09-10 05:29:17

标签: java design-patterns

我在UnZip下面解压缩文件,因为它解压缩,未压缩文件的名称输出到变量 destinationPath

public class UnZip {

public void unzip(String filename) throws IOException {

...
...

    try {

        ...
        ...

            }
            else {

                System.out.println("Extracting file: " + destinationPath);


                BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry));

                int b;
                byte buffer[] = new byte[1024];

                ...
                ...

                bos.close();
                bis.close();

            }

        }

    }
    catch (IOException ioe) {
        System.out.println("Error opening zip file" + ioe);
    }
     finally {
         try {
             if (zipFile!=null) {
                 zipFile.close();
             }
         }
         catch (IOException ioe) {
                System.out.println("Error while closing zip file" + ioe);
         }
     }
}

这是我的主要类,我创建了一个名为unzipper的UnZip对象,开始将文件压缩为 zipFilePath 。这是我的问题,当我创建unzipper对象并执行类的过程时,我想输出每个未压缩文件的名称,如UnZip中的变量 destinationPath 所示类。我可以使用任何设计模式来实现这个目标吗?

public class Window extends JFrame {

...
...

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Window frame = new Window();
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Window() {


                UnZip unzipper = new UnZip();
                try {
                    unzipper.unzip(zipFilePath);
                    //I wants to print the file name here
                } catch (Exception ex) {
                    // some errors occurred
                    ex.printStackTrace();
                }

            }
        }
}

1 个答案:

答案 0 :(得分:1)

您可以使用Observer Pattern。这样您就可以将interface附加到UnZip类,该类可以调用一个或者向感兴趣的各方提供信息的方法。

通常会打电话给#34;听众"在Swing