重構之美之一引入工廠方法支持擴展

作者: 張逸  來源: 博客園  發布時間: 2010-12-20 22:52  閱讀: 493 次  推薦: 0   原文鏈接   [收藏]  

  在開發框架時,若要支持擴展性,引入工廠方法或許會成為神來之筆。例如,在QueryWrapper類的addResource()方法中,需要創建一個IndexWriter對象。

 
public class QueryWrapper {
public final void addResource(RequestContext context) {
log(”Add
new resource.”)
IndexWriter writer
= createIndexWriter(context);
//
}
protected IndexWriter createIndexWriter(RequestContext context){
return new IndexWriterImpl(context);
}
}

  根據新的需要,在使用QueryWrapper類時,需要對IndexWriter進行擴展。然而,因為某些原因,我們不能直接修改框架的源代碼。此時,我們可以通過定義QueryWrapper以及IndexWriter類的子類,來達成這一目的:

 
public class QueryWrapperExtension extends QueryWrapper {
@Override

protected IndexWriter createIndexWriter(RequestContext context){
return new CustomedIndexWriterImpl(context);
}
}

  如果在addResource()方法中直接調用構造函數創建IndexWriter對象,則面對擴展的為難之處,可以想見。

0
0
 
標簽:重構
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()