在Java中,我了解到我使用new关键字实例化一个对象,例如
Employee e = new Employee();
在android中,通过浏览开发人员页面可实例化上下文对象,而无需使用new关键字,如下所示:
Context myContext = getApplicationContext();
为什么是这样 ?我应该认为应该使用new关键字以相同的方式创建上下文对象,如下所示:
Context myContext = new Context();
我认为有人可能会回答说getApplicationContext()方法返回一个上下文类型的对象,因此返回上面的语法,但是有人对为什么这样做而不是简单地做一个更深入的解释吗?
Context myContext = new Context();
因为有时您根本不想/不需要每次都创建一个新实例,所以有时您只想获取该对象而不实际自己处理它的创建。
例如,存在一个Singleton设计模式,在其通用实现中,new
由于构造函数是私有的,因此无法使用关键字创建新实例。因此,剩下要做的就是通过调用静态方法来获得类的实例:
public class MySingleton {
private MySingleton() { }
public static MySingleton getInstance() { ... }
}
有时您可能想使用Factory方法模式,它也处理新对象的创建/实例化:您调用一个方法,并且为您返回一个新的或现有的对象,而无需显式调用构造函数。
在使用Context的情况下,您无需创建此对象,因为系统会为您处理该对象并且该过程是透明的。您只需要调用一个方法就可以拥有实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句