易截截图软件、单文件、免安装、纯绿色、仅160KB

《Effective Java》: 考虑用静态工厂方法代替构造函数

考虑用静态工厂方法代替构造函数
类可以为它的客户提供一些静态工厂方法,来替代构造函数,或者同时也提供一些构造函数。
 静态工厂方法的一个好处是,与构造函数相比,静态工厂方法具有名字,它可以使得代码更容易阅读。如果一个类看起来需要多个构造函数,并且它们的原型特征相同,那么你应该考虑用静态工厂方法来代替其中一个或多个构造函数,并且慎重选择它们的名字以便明显地标示出它们的不同。
静态工厂方法的第二个好处是,与构造函数不同,它们每次被调用的时候,不要求非得创建一个新的对象。静态工厂方法可以为重复的调用返回同一个对象。这样做有两个理由。第一,它使得一个类可以保证是一个singleton。第二,它使得非可变类可以保证“不会有两个相等的实例存在”。
静态工厂方法的第三个好处是,与构造函数不同,它们可以返回一个原返回类型的子类型的对象。这种灵活性的一个应用是,一个API可以返回一个对象,同时又不使该对象的类成为公有的(匿名类或私有类)。以这种方式把具体的实现类隐藏起来,可以得到一个非常简洁的API。这项技术非常适合基于接口的框架结构,因为在这样的框架结构中,接口成为静态工厂方法的自然返回类型。
静态工厂方法的主要缺点是,类如果不含有公有的或者受保护的构造函数,就不能被子类化。
静态工厂方法的第二个缺点是,它们与其他的静态方法没有任何区别,在API文档中,他们不会像构造函数那样被明确标示出来。如果遵循标准的命名习惯,就可以将这个缺点减小到最少。这些命名习惯仍在演化中,但是静态工厂方法的两个名字已经变的很流行了:
★ valueOf    不太严格的讲,该方法返回的实例与它的参数具有相同的值。
★ getInstance    对于singleton的情形,这个方法返回惟一的实例。
总的来说,静态工厂方法和公有的构造函数都有它们各自的用途,我们需要理解它们各自的长处。要避免一上来就提供构造函数,而不考虑静态工厂,因为静态工厂通常更适合。如果你正在权衡这两种选择,又没有其他因素强烈的影响你的选择,那么你最好还是简单地使用构造函数,毕竟它是语言提供的规范。


相关文档:

java环境变量配置

(1)Ctrl+M --切换窗口的大小
(2)Ctrl+Q --跳到最后一次的编辑处
(3)F2        --当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标移开时Tooltip还会显示即Show Tooltip Description。
          F3   ......

通过JNI 实现 java与C++之间的信息传递

定义一个native 方法:
package ext;
import java.util.Hashtable;
public class TestJNI
{
   static
   {
       System.loadLibrary("dllfile");
   }
    public TestJNI()
    {
    ......

Java 编程技术中汉字问题的分析及解决


在基于 Java
语言的编程中,我们经常碰到汉字的处理及显示的问题。一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Java语言
默认的编码方式是UNICODE,而我们中国人通常使用的文件和数据库都是基于GB2312或者BIG5等方式编码的,怎样才能够恰当地选择汉字编码方式
并正确地 ......

Java count down

public static void main(String[] args){
SimpleDateFormat da = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
String aimTime ="2010-02-03 17:30:00.000";
int count = 0;
Date aimDate = d ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号