2009年4月9日星期四

JavaDesign_017:模版方法模式 Template Method(摘录+整理)

1. 特点
(1)父类定义的顶级逻辑(模版方法)具有绝对的“权威性”,不可改变。
(2)子类可以置换掉父类的可变逻辑(基本方法,但不可以改变父类定义的顶级逻辑。
(3)顶级逻辑(模版方法)调用可变逻辑(基本方法)。

2. 代码架构(1)定义一个抽象类,其中包含抽象基本方法(强制子类必须实现,方法不宜太多),以及一个具体的模版方法,模版方法调用基本方法。
(2)定义
该抽象类的子类,实现所有抽象基本方法。不同的子类,有不同的实现方法。
(3)基本方法的命名一般为doXXX()。
(4)基本方法也可以不是抽象的,可以存放所有子类共同的逻辑。

3. Java中对模版方法模式的应用
(1)模版方法模式本身就利用了Java中的抽象类的继承特点来实现的。(2)HttpServlet类。模版方法:service(),基本方法:7个doXX()。(3)AbstracTableModel类。(4)AbstracListModel类。
4. 典型应用场景(1)为不同的账户(活期、定期)计算利息(账户类型、利息率、利息)。(2)运行某Benchmark 算法多次,取平均值。Benchmark 算法交给子类实现。
(3)重构代码:用多态性取代条件转移。原来不同的几个方法,经过分析发现功能其实相同,只是实现不同;遂改成同名方法,由不同的子类实现。

参考文献:
1. 《设计模式》 板桥里人
2. 《Java与模式》 阎宏

没有评论: