重構原則(java)
1995,Auer曾在文獻[AUER95]中指出:1.應當根據(jù)行為而不是狀態(tài)定義一個類。也就是說,一個類的實現(xiàn)首先建立在行為基礎之上,而不是建立在狀態(tài)的基礎之上。
2.在實現(xiàn)行為時,是用抽象狀態(tài)而不是用具體狀態(tài)。如果一個行為涉及到對象的狀態(tài)時,使用間接的引用而不是直接的引用。換言之,應當使用取值方法而不是直接引用屬性。
3.給操作劃分層次。一個類的行為應當放到一個小組核心方法(kernel method)里面,這些方法以很方便地在子類中加以置換。
4.將狀態(tài)屬性的確認推遲到子類中。不要在抽象類中過早聲明屬性變量,應該將它們盡量地推遲到子類中去聲明。在抽象超類中,如果需要狀態(tài)屬性的話,可以調用抽象的取值方法,而將抽象的取值方法的實現(xiàn)放到具體子類中。
如果能夠遵從這樣的原則,那么就可以在等級結構中將接口與實現(xiàn)分隔開來,將抽象與具體分割開來,從而保證代碼可以最大限度地被復用。