设计模式--模板方法模式

104 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

模板方法模式: 定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构, 也就是步骤,而步骤的实现可以在子类中完成 。

模板方法模式的使用场合: 1、一次性实现一个算法的不变部分,并且将可变的行为留给子类来完成。 2、各子类公共的行为应该被提取出来并集中到一个公共父类中以避免代码的重复。首先识别现有代码的不同之处,并且把不同部分分离为新的操作,最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。 3、控制子类的扩展

模板方法模式的组成 1、父类角色:提供模板。 2、子类角色:为模板提供实现。

自定义的模板实例实现: 模板类 package org.ml.pattern; public abstract class Template { public void method1() { }; public void method2() { }; public void method3() { }; /** 模板方法执行顺序 */ public void template() { this.method1(); this.method2(); this.method3(); } }

模板实现的子类 package org.ml.pattern; public class TemplateImpl extends Template { @Override public void method1() { System.out.println("method1"); } @Override public void method2() { System.out.println("method2"); } @Override public void method3() { System.out.println("method3"); } }

测试主类 package org.ml.pattern; public class Test { public static void main(String[] args) { Template temp = new TemplateImpl(); temp.template(); } }

运行结果: method1 method2 method3 说明: 必须使用抽象类来实现,不能使用接口实现,因为要实现顺序执行,接口没法实现。