考虑用静态工厂方法代替构造器
来源:互联网 发布:手机震动软件 编辑:程序博客网 时间:2024/05/20 20:43
考虑用静态工厂方法代替构造器
这里说的静态工厂方法不同于设计模式中的工厂方法。
优点
1. 有名称
例如: DateFormatUtil#string2Date(String dateStr,String format);
2. 不用每次都创建对象,可以减小系统开销
3. 可以返回类型的任意子类对象,甚至是非公有对象
public class Dog { String name; public static Dog getBlackDog() { return new Dog(); } public static Dog getJimDog() { return new JimDog("Jim Dog"); }}class JimDog extends Dog { JimDog(String name) { System.out.println(name); this.name = name; }}
4. 使代码更加简洁
Map<String,Object> map = new HashMap<String,Object>();
可以改成:
newInstance(){ return new HashMap<String,Object>();}Map<String,Object> map = newInstance();
这一点在Java 7以后意义不大了。
缺点
1. 如果没有public或者protect的构造器,该类不能被子类化
鼓励程序员使用复合(composition)而不是继承。见16条
2. 跟其他static方法没有任何区别,Javadoc没有照顾到,不方便查看如何实例化对象
这一点意义不大,因为我们用的强大的IDE工具一眼就看出来了。
总结
思考
相对这种方法,构造器的优势是什么?
0 0
- 01、考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- [Effective Java]考虑用静态工厂方法代替构造器
- 第一条:考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- 《Effective Java》-考虑用静态工厂方法代替构造器
- 第一条:考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- EffectiveJava-考虑用静态工厂方法代替构造器
- 01-考虑用静态工厂方法代替构造器
- 01_考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器。
- 考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- 第一条:考虑用静态工厂方法代替构造器-----静态工厂方法讲解
- 考虑使用静态工厂方法代替类的构造器
- Android设计模式——单例模式
- Freeline - Android平台上的秒级编译方案
- ISIS内部文件遭曝光:组织内部一片混乱,恐怖分子月薪仅50美金
- 分享一款非常好用流畅的gif录制软件
- 数据库安全防SQL注入
- 考虑用静态工厂方法代替构造器
- Using kgdb, kdb and the kernel debugger internals
- java+eclipse+selenium自动化
- 负数取模运算问题
- js方法将系统当前时间转换为字符串
- android 7.0新特性
- datagrid分页的一种实现方法
- 一、tftp升级实现说明(一)
- Object Detection发展介绍