类实施最佳实践?

时间:2018-09-22 06:39:12

标签: java android oop

我有一个代码(Activity.class),其中正在调用我的基本方法来执行。 现在,我正在定义另一个类MyTask extending AsyncTask。 我的问题是:

a)在某些情况下,我们在Activity.java的同一Java文件中声明外部类作为示例,但在Activity类之外

b)在某些情况下,我们在Activity.java的同一java文件中声明外部类,例如,但在Activity类和

内部

c)在某些情况下,我们在MyTask.java

中在不同的Java文件中声明外部类作为示例。

这三种实现之间在可访问性,内存和最佳实践方面有什么区别。 描述性的答案将清除我的概念,在这里受到欢迎。

2 个答案:

答案 0 :(得分:0)

与计划在哪里实现AsyncTask有关。

如果AsyncTask与Activity的目标直接相关,例如,当您尝试从类中检索变量时,则建议将AsyncTask类包含在活动中。但是,这种情况很少发生。在这里,您必须将AsyncTask称为ActivityName.AsyncTaskName,因此不建议asynctask是否与主动性功能密切相关

将AsyncTask放在同一文件中但在活动之外的缺点/优势(取决于使用情况),它只能是程序包私有的,这意味着我只能从同一程序包访问。

如果您打算在许多活动/类中使用此AsyncTask,则应将其放在另一个Java文件中

答案 1 :(得分:0)

可访问性或范围

就范围而言,在第一种情况中,我们在单个文件中定义了多个Java类(而非嵌套类)。

Java允许我们在一个文件中定义多个类,但是有一个限制,只能公开一个类。 因此只有一个类可以在其包外部访问,而其他所有类都是包私有类。但是,编译后,每个类将由其自己的.class文件表示,与定义不同的文件相同。

第二种情况下,我们在Java类(MyTask.java)内定义了Java类(Activity.java),这被称为内部类(在本例中为嵌套类)。 / p>

嵌套类可访问性也与类方法相同。如果该类是公共的,则可以通过其封装类的对象来访问它的包。但是,如果要访问嵌套类的方法,则需要创建与封装类相同的此类的对象。 例如new Activity().new MyTask().foo()

第三种情况下,我们将每个类定义为单独的文件

可访问性将直接取决于我们为类定义的访问修饰符,如果类是公共的,则可以在整个项目中的任何地方访问它。通过这种方式,您可以完全控制您希望类的访问方式。

内存

对于内存,根本没有区别

在创建一个类的对象之前,一个类没有任何内存。因此定义类的位置完全不相关。内存将取决于创建的对象数。

但是对于嵌套类,如果我们在其封闭类之外访问嵌套类,那么我们首先需要其封闭类的对象,以便即使我们只想访问嵌套类,封闭类也将获得内存。

>

但是,如果我们访问内部,则在所有情况下,规则存储器将保持不变

最佳做法

在这些情况下,最佳做法完全取决于用例

对于第一种情况,如果我们知道我们永远不会使用class A,那么现在假设我们有两个class Bclass A extends Bclass B直接在包的外部,然后我们可以在同一个文件中定义两个类(不是嵌套类),并可以将class A设为我们的公共类

使用这种方法,我们只保存了文件,还保存了创建文件的时间,但同时也损害了可读性。以我个人的观点,我将创建一个新文件,以便我可以轻松阅读和检查我的课程。

第二种情况下,如果我们知道某个类将只使用一次,例如MyTask.java将仅在Activity.java中使用,那么我们可以在{{ 1}},使用这种方法,我们将所有代码集中在一个地方,以便一起使用。

我们的第三种情况可以在很多情况下使用,通常是最常用的方式。每个类都放在单独的文件中,因此以后可以轻松访问每个类

在我们的示例中,如果我们知道Acitivty.java可以被多个类使用,那么我们可以将其创建为具有公共访问权限的单独文件。