Android开发:创建对象的类,调用某些方法然后返回该对象(如何?)

时间:2011-07-13 21:54:04

标签: java android

我想知道我是怎么去上课的,我们称之为Class Master,其中: - 你调用Class Master并调用A类,然后调用A类的一些方法,然后返回A类,这样你就可以从返回的A类中调用方法,你可以调用类Master。

基本上,我想改变这段代码:

//Create FTPClient object and connect
FTPClient ftpClient = new FTPClient(); 
ftpClient.connect(server);
ftpClient.enterLocalPassiveMode();
ftpClient.login(username);
ftpClient.listFiles("/");

进入此代码:

FTPClient ftpClient = new ftpConnection(); //Connects, enters passive mode and logs in then returns the FTPClient object we created so we can do other stuff with it, like below:
ftpClient.listFiles("/");

如果您理解我的意思,那么我可以通过一个单独的呼叫在不同的活动中使用它来连接到FTP。

我试过自己,但由于某种原因我没有得到预期的效果(没有我尝试过的代码)

谢谢, 亚历克斯。

2 个答案:

答案 0 :(得分:2)

使用工厂设计模式:

public class ftpClientFactory {
    public ftpClientFactory(){}

    public FTPClient getNewClient(){
        FTPClient ftpClient = new FTPClient(); 
        ftpClient.connect(server);
        ftpClient.enterLocalPassiveMode();
        ftpClient.login(username);
        return ftpClient;
    }
}

使用:

FTPClient ftpClient = new ftpClientFactory().getNewClient();
ftpClient.listFiles("/");

答案 1 :(得分:1)

如果使用类构造函数创建ftp连接,则类创建将花费太长时间。您应该在额外的线程中运行ftp调用。如果任何调用(即网络)阻止UI线程太长,则应用程序将因ANR而中断。这可能就是您的解决方案无法正常工作的原因。

无论如何 - 您可以在任何类中创建静态方法,例如:

class MyMaster{
    static FTPClient doAllThatCrazyStuffAndGetMeThatFTPClient(){
         FTPClient ftpClient = new FTPClient(); 
         ftpClient.connect(server);
         ftpClient.enterLocalPassiveMode();
         ftpClient.login(username);
         ftpClient.listFiles("/");
         return ftpclient;
    }
}

然后从代码中的任何位置调用静态方法:

FTPClient connectedClient = MyMaster.doAllThatCrazyStuffAndGetMeThatFTPClient();

或者您正在寻找Singleton Pattern。它还可以保存状态信息。所以你可以在任何地方使用相同的连接。但是不要创建memory leaks