浏览 3086 次
锁定老帖子 主题:模板方法模式
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-11
方法模式:
什么是方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法可以使子类可以不改变一个 算法的结构即可以重定义该算法的某些特定步骤。
方法模式的特点:把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。
当不变的和可变的行为在方法中混合在一起时,不变的行为就会在子类中重复出现,模板方法模式就是将这些不变的 行为搬移到一个超类中,避免重复代码。
//模板模式,将通用的抽象到父类,将个别不同的处理交由继承的子类实现 //父类就是模板。 /** * 当我们要完成某一细节层次一致的一个过程或者一系列的步骤,但是某个个别步骤在更详细 * 的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理 */ abstract class Mould { public static void main(String[] args) { Mould A = new ConcreteA(); A.testMain(); Mould B = new ConcreteB(); B.testMain(); } //不同的步骤交由不同的子类实现。 public abstract void printOperaction1(); public abstract void printOperaction2(); //相同的处理步骤 public void testMain(){ printOperaction1(); printOperaction2(); } } /** *每个模板可以有多个不同的子类与之对应。 *每一个实现类都给出抽象方法的具体实现。 */ //继承模板类,实现个性化步骤 class ConcreteA extends Mould{ @Override public void printOperaction1() { System.out.println("I'm concreteA operaction1"); } @Override public void printOperaction2() { System.out.println("I'm concreteA operaction2"); } } //继承模板类,实现个性化步骤 class ConcreteB extends Mould{ @Override public void printOperaction1() { System.out.println("I'm concreteB operaction1"); } @Override public void printOperaction2() { System.out.println("I'm concreteB operaction2"); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-03-22
模板利用了多态和抽象。
|
|
返回顶楼 | |