欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第一章 创建和销毁对象

程序员文章站 2022-06-11 11:57:17
...

创建和销毁对象

考虑用静态工厂的方法代替构造器
类可以提供一个公有的静态工厂方法,它只是返回类的实例构造方法。这里所指的静态工厂方法不同于设计模式的静态工厂方法。

public static Boolean valueIOf(Boolean b) {
		return b?Boolean.TRUE:Boolean.FALSE;
	}

优势一:静态方法都有名称:通过名称判定更方便了解且更易阅读返回的内容是什么。
优势二:不必每次调用它们的时候都创建一个新的对象
优势三:在创建参数类型实例时,它们使代码变得更加简洁。

public class HashMapUtils {
	public static<K,V> HashMap<K,V> newInstance(){
		return new HashMap<K,V>();
	}
}
Map<String,Object> map=HashMapUtils.newInstance();

缺点一:类如果不含有公有或者受保护的构造器,就不能被子类实例化。
缺点二:它于其它的静态方法实际上没有任何区别。

遇到多个构造器参数时,要考虑构建器
第一种情况,正常情况下有很多参数的时候我们会通过构造方法重载来进行区分,即为不同的参数列表创建不同功能的构造器,这样的结果就是阅读困难,其它开发人员也很难理解其中的意思。

第二种情况,我们要是用JavaBean来创建。这样就可以随意选择填写参数。但是这样JavaBean模式阻止了把类做成不可变的可能,这就需要程序员额外作出努力来确保它的线程安全。

第三种情况:这是推荐的一种方式,既能保证像重叠构造器模式那样的安全性,也能保证像JavaBean模式那么好的可读性。这就是Builder模式的一种形式,不直接生成你想要的对象,而是让客户端在builder调用类似setter的方法,来设置每个相关的可选参数。最后客户端调用无参的build方法来生成不可变的对象,这个builder是它构建的类的静态成员类。

相关标签: Effect Java