對象是行爲(Java中用方法實現)和屬性(Java中用成員變量實現)的組合。屬性和對象自己有着相同的生命週期。在任何給定的時間點,對象有着特定的狀態,狀態是類的所有實例變量所組合而成的快照。由於這個緣由,有時候實例變量也被稱之爲狀態變量。java
行爲方法操做或者改變對象的屬性。換句話說,行爲方法能夠改變對象的狀態。查詢方法返回對象狀態的某個片段。函數
注意:通常咱們將方法設計成:要麼改變對象的狀態,要麼返回信息。不要兩件事情都作。工具
有時候,您發現某個方法接受參數,只對這些參數進行處理,而後返回一個值。該方法不須要操做對象的狀態。這樣的方法叫作工具方法。有時候,工具方法在別的語言中被稱之爲函數。工具方法是全局的:任何客戶代碼均可以訪問它們。設計
有時候,在工具類中建立實例是沒有什麼意義的,例如,DateUtil 的方法createDate,該方法以月份、天、和年份做爲參數,最後返回Date 對象。方法createDate 不改變其它數據。若是不去建立DateUtil 對象,還會稍稍簡化您的代碼。最後,由於createDate 是DateUtil 中惟一的方法,因此沒有必要建立DateUtil 實例。由於這些緣由,createDate 是類方法的候選者。對象
原:生命週期
package studentinfo;get
import java.util.*;class
public class DateUtil {import
public Date createDate(int year, int month, int date) {變量
GregorianCalendar calendar = new GregorianCalendar();
calendar.clear();
calendar.set(Calendar.YEAR, year - 1900);
calendar.set(Calendar.MONTH, month - 1);
calendar.set(Calendar.DAY_OF_MONTH, date);
return calendar.getTime();
}
}
重構:
package sis.studentinfo;
import java.util.*;
public class DateUtil {
private DateUtil() {}
public static Date createDate(int year, int month, int date) {
GregorianCalendar calendar = new GregorianCalendar();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1);
calendar.set(Calendar.DAY_OF_MONTH, date);
return calendar.getTime();
}
}