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

Effective Java 学习笔记(1)

通常情况下,我们在写一个类时,一般会赋予它一个或几个public的构造函数,让外部程序能够创建对象. 然而,在effective java 中,从另一个角度告诫我们在使用public的构造函数前,先考虑用public 的静态函数来创建对象. 
其优点如下:
1. 一个静态的工厂函数,可以取不同的名字. 而构造函数的名字只能与类同名. 
  一个API的设计中,一个好懂的名字可以免去使用者在文档中查找其使用方法的麻烦. 
   如: 假如有个类叫Human,假如它有个构造函数 Human( int sex) ,根据参数来创建不同的对象. 用户就可能去查文档,sex=1 or sex=0 分别代表什么. 但如果我们给它加两个静态的工厂函数,Human.getMan() 和 Human.getWoman() 用户一看名字就知道是怎么用.
   另外,正因为静态工厂函数可以取不同的名字,可以免去构造函数限定参数的烦恼.
   例子同上,如我们要有一个根据身高来创建一个Human对象,于是我们写有Human(int height), 后来,我们又想根据年纪来创建一个对象,于是我们又有Human(int age), 很明显,由于函数签名的限制,我们只能选择其中一个构造函数.但使用静态工厂方法就没有这个烦恼. 我们可以有Human.getInstanceByHeight(int height) 也可以有 Human.getInstanceByAge(int age),他们可以很合谐的在一起工作.
2. 使用静态工厂函数,不必像构造函数那样每次都创建对象,可以在很大程度上节约资源,特别是有些类仅有有限个数的对象时.
    
如 我们有Month这么一个类, 按照原来的方法,我们可能有Month(int mon), 于是,每次调用一个构造函数,就会创建一个Month对象,其结果是内存中很可能存在大于12个Month对象. 然而,假如,我们事先定义12个静态对象,从Jan到Dec,然后给一个Month.getMonth(int mon)这么一个静态工厂方法, 在函数中根据数字返回其中一个静态对象,这样,不管程序怎么运行,内存中始终只有12个Month对象. 
这样做还有一个好处就是, 用户可以直接使用== 比较两个对象是否相等,而不用equal方法.
3. 一个静态工厂函数,返回的对象可以是这个类的对象,也可以是其子类的对象,增加了设计的灵活性。在实际运用中,可以得到几个好处。
  其一,可以隐藏一些类,减少对外公布的API数,精简接口。这句话可以这样理解。比如设计一个框架,里面包含有20个类,但实际上,我们可以通过使用静态工厂函数隐藏一些内部实现,使用户不用知道全部的类及使用方法,使框架易用。


相关文档:

java读取xml几种方法

  1)DOM(JAXP Crimson解析器)
   
DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找
特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被 ......

java代码连接到oracle数据库

package com.deng.oracle;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestOracle {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriv ......

Java反射机制:Constructor!

import org.junit.Test;
public class ConstructorTest {
@Test @SuppressWarnings("unchecked")
public void testConstructor(){
try {
Class clazz = Class.forName("cn.vicky.utils.User");
Method method = clazz.getDeclaredMethod("getName");
Constructor<? extends Live> constructor = ......

IBM技术社区2009 Java 专区最受欢迎内容

转自:IBM技术社区2009 Java 专区最受欢迎内容
最受欢迎的热门主题

Web 开发
2009
年,Web 2.0 热潮促使 Web 开发继续成为当前最热门的主题。其中,基于动态语言 Goovy 的新兴 Web 开发框架 Grails
成为了备受瞩目的新星。除此之外,许多传统的基于 Java 语言的 Web 开发框架,如 Struts、JSF、GWT
等,也都融入 ......

Java 复习笔记_第5天

doGet()和doPost()
       Jsp页面的form标签里的method属性为get时调用doget(0,
       为post时调用doPost()
Jsp 
       Jsp引擎(Tomcat)先将jsp文件转换为servlet,然后调用Java编译器javac.exe对
   ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号