博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
引入工厂方法支持扩展
阅读量:7232 次
发布时间:2019-06-29

本文共 802 字,大约阅读时间需要 2 分钟。

《重构之美》之四 

在开发框架时,若要支持扩展性,引入工厂方法或许会成为神来之笔。例如,在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对象,则面对扩展的为难之处,可以想见。

本文转自wayfarer51CTO博客,原文链接:http://blog.51cto.com/wayfarer/458095,如需转载请自行联系原作者

你可能感兴趣的文章
jenkins相关默认路径
查看>>
条件编译#ifndef
查看>>
正则表达式
查看>>
slick对超过22个属性的表进行映射的两种办法
查看>>
hdu5731
查看>>
iOS 路径设置(转)
查看>>
科学计算和可视化
查看>>
WPF 自定义TextBox,可控制键盘输入内容
查看>>
一起学Android之ViewPager
查看>>
ajax方式提交表单数据并判断当前注册用户是否存在
查看>>
2017.10.23 Arduino Atmel EFM32低功耗监测
查看>>
poj2063
查看>>
poj1434
查看>>
Eclipse主题更改
查看>>
ubuntu刚安装好之后apt-get使用异常
查看>>
C++ vector的reserve和resize详解
查看>>
maven3常用命令、java项目搭建、web项目搭建
查看>>
BZOJ1023:[SHOI2008]仙人掌图——题解
查看>>
JavaBean简单及使用
查看>>
css3基本属性
查看>>