您的位置:首页 > 其它

对象实例化-new & getInstance()方法

2014-02-14 11:29 169 查看
首先声明一下的是对于抽象类,要想对其实例化,只能用getInstance方法,是不能用new的.

单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。所有的客户对象共享一个单例对象。单例对象持有对自己的引用。

private Students(){}

private static Student instance = new Student();

public static Student getInstance(){

return instance;

}

从上可以看出,构造函数是私有的,而唯一公开的供我们调用一个对象的接口不是构造函数,而是一个getInstance()函数,在这里没有将构造函数设置为公有,直接new 一个对象的好处是:

这种构造对象的方式,我们一般称之为单例模式,单例模式,顾名思义,只允许一个对象存在,无论是什么时候,你构造和调用的对象都永远是那个实例。

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类.

很明显,单例模式阻止了大量对象的生成,节省了内存,最重要的一点还是,它适用于很多需要处理资源冲突的地方.

1. new的使用:

如Object _object = new Object(),这时候,就必须要知道有第二个Object的存在,而第二个Object也常常是在当前的应用程序域中的,可以被直接调用的
2. GetInstance的使用:

在主函数开始时调用,返回一个实例化对象,此对象是static的,在内存中保留着它的引用,即内存中有一块区域专门用来存放静态方法和变量,可以直接使用,调用多次返回同一个对象。
3.两者区别对照:

大部分类(非抽象类/接口/屏蔽了constructor的类)都可以用new,new就是通过生产一个新的实例对象,或者在栈上声明一个对象 ,每部分的调用用的都是一个新的对象。

getInstance是少部分类才有的一个方法,各自的实现也不同。getInstance在单例模式(保证一个类仅有一个实例,并提供一个访问它的全局访问点)的类中常见,用来生成唯一的实例,getInstance往往是static的。

(1) 对象使用之前通过getinstance得到而不需要自己定义,用完之后不需要delete;

(2)new 一定要生成一个新对象,分配内存;getInstance() 则不一定要再次创建,它可以把一个已存在的引用给你使用,这在效能上优于new;

(3) new创建后只能当次使用,而getInstance()可以跨栈区域使用,或者远程跨区域使用。所以getInstance()通常是创建static静态实例方法的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐