静态工场方法代替构造器
2015-08-25 19:51
295 查看
1.对于一个类而言,获取实例常用的方法就是提供一个public constructor
2.学过design pattern的人,肯定能猜到另外一种方法就是static factory method(sfm)
优点:
1.静态工场方法有名称,比构造器更能理解其职能。而且涉及构造器overload时,sfm更见清晰,除非你愿意写一堆参数不同的构造器
2.sfm每次使用时不需要每次都创建一个对象,参照flyweight模式,想想jdbc的连接池,sfm真是不错
3.sfm可以返回原返回类型的任何子类型对象
4.sfm在创建参数化类型实例的时候,使得代码更加简洁
缺点:
1.类如果不含public or protected的构造器,就不能被子类化
2.sfm与其他静态方法一个鸟样...
2.学过design pattern的人,肯定能猜到另外一种方法就是static factory method(sfm)
public static Boolean valueOf(boolean b){ return b?Boolean.TRUE:Boolean.FALSE;}
优点:
1.静态工场方法有名称,比构造器更能理解其职能。而且涉及构造器overload时,sfm更见清晰,除非你愿意写一堆参数不同的构造器
2.sfm每次使用时不需要每次都创建一个对象,参照flyweight模式,想想jdbc的连接池,sfm真是不错
3.sfm可以返回原返回类型的任何子类型对象
4.sfm在创建参数化类型实例的时候,使得代码更加简洁
缺点:
1.类如果不含public or protected的构造器,就不能被子类化
2.sfm与其他静态方法一个鸟样...
相关文章推荐
- GUI编程笔记(java)03:GUI的组件继承图
- Cannot set up guest memory 'android_arm': Invalid argument 解决方法
- hdu4291-A Short problem(2012 chengdu online )
- 1708: A - B
- 信号通信学习
- C语言进阶:整型提升
- ASP.NET MVC 定义JsonpResult实现跨域请求
- UIView(animation)
- 关于mini2440LCD模块总结
- Wireshark malformed packet
- c++之——————各种变量
- POJ 3862 Asteroids(两个三维凸包的重心到表面最短距离和)
- 输入整数二进制1的个数(剑指)
- 【LeetCode】(204)Count Primes(Easy)
- 洒脱
- VMware虚拟机克隆Linux系统引起的网卡问题
- 1709: 打印字符 (字符串)
- linux基础及常用命令的使用
- Android 中的进度条示例 ProgressDialog
- Android应用层操作GPIO