重構原則(Java)

xiaofeng_w_w發表於2007-04-06
1995,Auer曾在文獻[AUER95]中指出:
1.應當根據行為而不是狀態定義一個類。也就是說,一個類的實現首先建立在行為基礎之上,而不是建立在狀態的基礎之上。
2.在實現行為時,是用抽象狀態而不是用具體狀態。如果一個行為涉及到物件的狀態時,使用間接的引用而不是直接的引用。換言之,應當使用取值方法而不是直接引用屬性。
3.給操作劃分層次。一個類的行為應當放到一個小組核心方法(kernel method)裡面,這些方法以很方便地在子類中加以置換。
4.將狀態屬性的確認推遲到子類中。不要在抽象類中過早宣告屬性變數,應該將它們儘量地推遲到子類中去宣告。在抽象超類中,如果需要狀態屬性的話,可以呼叫抽象的取值方法,而將抽象的取值方法的實現放到具體子類中。
如果能夠遵從這樣的原則,那麼就可以在等級結構中將介面與實現分隔開來,將抽象與具體分割開來,從而保證程式碼可以最大限度地被複用。

相關文章