【java】Effective Java01

第一条:考虑用静态工厂方法代替构造器

类似于 Bolean.valueOf(boolean b)

 

第二条:遇到多个构造器参数时要考虑用构建器

/**   
* @Title: person.java 
* @Package com.himtech.model 
* @Description: TODO(用一句话描述该文件做什么) 
* @author hmzhangxaut@163.com  
* @date 2016年11月24日 下午5:24:51 
* @version V1.0   
*/
package com.himtech.model;

/** 
 * ClassName: person <br/> 
 * Function: TODO ADD FUNCTION. <br/> 
 * Reason: TODO ADD REASON(可选). <br/> 
 * date: 2016年11月24日 下午5:24:51 <br/> 
 * 
 * @author hmzhang 
 * @version  
 * @since JDK 1.7
 */
public class Person {
    private int age;
    private String address;
    private String name;
    private String height;
    
    public static class Builder{
        
        private int age;
        private String address = "";
        private String name = "" ;
        private String height = "";
        
        public Builder(int age, String address){
            this.age = age;
            this.address = address;
        }
        
        public Builder address(String val){
            this.address = val;
            return this;
        }
        
        public Builder name(String val){
            this.name = val;
            return this;
        }
        
        public Builder height(String val){
            this.height = val;
            return this;
        }
        
        public Person build(){
            return new Person(this);
        }
        
    }
    
    private Person(Builder builder){
        address = builder.address;
        name = builder.name;
        height = builder.height;
    }

    @Override
    public String toString() {
        return "Person [age=" + age + ", address=" + address + ", name=" + name + ", height=" + height + "]";
    }
    
}

 

第三条:用私有构造器或者枚举类型强化Singleton属性

 

第四条:通过私有构造器强化不可实例化的能力

 

第五条:避免创建不必要的对象

String s = new String("age");

可以使用静态块

static{

}

 

第六条:消除过期的对象引用

 

posted @ 2016-11-25 15:32  hm_zhang  阅读(172)  评论(0编辑  收藏  举报