TemplateMethod 模式与代码重构

      模板方法模式是对继承关系的复用,属于类的行为模式。实现方法是准备一个抽象类,将部分方法以具体的方法实现,然后声明一些抽象方法迫使子类实现具体逻辑。

      通常模板方法模式有两个角色:抽象模板角色和具体模板角色。抽象模板角色中都一个模板方法和若干基本方法,基本方法可以是迫使子类实现的抽象方法,也可以是一个“钩子方法”,即有默认的空方法体的方法声明。这种钩子方法习惯上叫做do什么什么,比如HttpServlet 中的 doGet(), doPost() 等等,实际上HttpServlet也是模板方法模式的实现。具体模板子类可以有选择的实现钩子方法。其UML示意图如下:


                                                
 

      模板方法模式可以作为有继承等级结构的代码重构的手段。

      (1) 将大方法打碎。可以将一个包含了很多操作的大方法分解成若干的粒度比较细的小方法。

      (2) 使用取值方法。使用set get方法替代属性变量在大方法中的声明。这样做可以使状态的声明尽量推迟到子类。代码重构的一个重要原则就是使方法操作尽量向上集中,而状态的变化尽量向下集中。

      (3) 以多态性取代条件转移。即以不同子类的实现取代在超类中做过多的 if .. else 这样的条件转移。

------------------------------------------------------------------------

      PFA for sample code

------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值