開發(fā)初期,你可能會(huì)在兩個(gè)classes之間建立一條單向連接,使其中一個(gè)class可以引用另一個(gè)class.隨著時(shí)間推移,你可能發(fā)現(xiàn)referred class需要得到其引用者(某個(gè)object)以便進(jìn)行某些處理.也就是說它需要一個(gè)反向指針.
[反向指針]手法有點(diǎn)棘手,所以在你能夠自在運(yùn)用它之前,應(yīng)該有相應(yīng)的測(cè)試.通常我不花心思去測(cè)試訪問函數(shù)(accessors),因?yàn)槠胀ㄔL問函數(shù)的風(fēng)險(xiǎn)沒有高到需要測(cè)試的地步,但本重構(gòu)要求測(cè)試訪問函數(shù),所以它是極少數(shù)需要添加測(cè)試的重構(gòu)手法之一.
本重構(gòu)運(yùn)用反向指針(back pointer)實(shí)現(xiàn)雙向關(guān)聯(lián)(bidirectionality).其他技術(shù)(例如連接對(duì)象,link objects)需要其他重構(gòu)手法.