创建和销毁对象

2017-10-13  本文已影响0人  badcyc

考虑用静态工厂方法代替构造函数

静态工厂方法只是一个简单的静态方法,它返回的是类的一个实例

三个优点

如果一个构造函数的参数并没有确切的描述被返回的对象,那么选用适当名字的静态工厂可以使用一个类更易于使用,并且相应的客户代码更易于阅读。

1.这使得一些非可变类可以使用一个预先构造好的实例,或者把已经构造好的实例缓存起来,以后再把这些实例飞发给客户,从而避免创建不必要的重复对象。
2.静态工厂方法可以重复的调用返回同一个对象,这可以被用来控制"在某一时刻哪些实例应该存在".

两个缺点

使用私有构造函数强化singleton属性

singleton类是指这样的类,他只能实例化一次。singleton通常被用来代表那些本质上具有唯一性的系统组件,比如视频显示或者文件系统。

//Singleton with final field
public class Elvis{
pulic static final Elvis INSTANCE =new Elvis();
private Elvis(){
···
}
···//Remainder omitted剩余部分省略
}

私有构造函数仅被调用一次,用来被实例化公有的final域Elvis.INSTANCE。由于缺少公有的或者受保护的构造函数,所以保证了Elvis的全局唯一性:一旦Elvis类被实例化之后,只有一个Elis实例存在——不多也不少。

public class Elvis{
private static final Elvis INSTANCE =new Elvis();
private Elvis(){
···
}
public static Elvis getInstance(){
return INSTANCE;
}
...//Remainder omitted
}

所有对于静态方法Elvis.getInstance的调用,都会返回同一个对象引用,所以,不会有别的Elvis实例被创建。

上一篇 下一篇

猜你喜欢

热点阅读