Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中应用委托模式的正确方法_Java_Android_Design Patterns - Fatal编程技术网

Java 在android中应用委托模式的正确方法

Java 在android中应用委托模式的正确方法,java,android,design-patterns,Java,Android,Design Patterns,我试图在我的android应用程序中使用委托设计模式,但不确定是否正确。这是我的LoginActivity.java代码 这是我的ConnectDatabase.java delegator public class ConnectDatabase { public static void main(String[] args) { // TODO Auto-generated method stub } public boolean authentica

我试图在我的android应用程序中使用委托设计模式,但不确定是否正确。这是我的LoginActivity.java代码

这是我的ConnectDatabase.java delegator

public class ConnectDatabase {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }
    public boolean authenticate(String email, String password) {
        Log.d("Message", email+" &"+password);
        return false;
    }

}

这是使用设计模式的正确方法,还是我必须创建一个接口,然后让LoginActivity.java实现它?

您的代码正在委托,但我没有使用委托模式

新连接数据库。验证。。。可以简单地写为ConnectDatabase.authenticate,然后是一个静态实用工具方法。您根本不需要对象

对象不执行其声明的任务之一,而是将该任务委托给关联的辅助对象。有一种责任倒置,其中一个助手对象(称为委托)被赋予为委托者执行任务的责任


我认为,当上面声明您委托给关联对象时,您需要从字面上理解它。首先,因为对象需要有成为对象的理由,它们需要责任,它们需要封装某些东西。例如,它可以为您跟踪某些状态,并对您的活动隐藏一些复杂的状态机逻辑。在同一行中创建和丢弃辅助对象时,这两个对象之间也没有关联。

正确的方式是什么意思?您的代码是否按预期工作?它工作正常,但我是否正确实现了设计模式,或者它可能有一些缺陷?这个问题似乎与主题无关,因为它是关于代码审查的。我在某个地方读到,我们必须使用一个接口,然后创建其他类来实现该接口。但这里我只是使用一个对象访问那个类。通过接口还是通过简单调用,哪种方法更好?问题相当广泛,因为委托可以是简单的方法调用,也可以像多接口范例一样复杂。所以,是的,你使用的是委托,但这是使其可行的背景。
public class ConnectDatabase {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }
    public boolean authenticate(String email, String password) {
        Log.d("Message", email+" &"+password);
        return false;
    }

}