设计模式--行为型--模板模式
来源:互联网 发布:上古世纪男性捏脸数据 编辑:程序博客网 时间:2024/06/07 14:55
一、模板方法模式简介(Brief Introduction)
模板方法模式(Template Method Pattern),定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可以重定义算法的某些特定步骤。模板方法模式把不变行为搬移到超类,从而去除子类中的重复代码,实际上模板方法模式就是提供了一个代码复用平台。二、解决的问题(What To Solve)
要完成在某一细节上层次一致的一个过程或一系列步骤,但个别步骤在更详细的层次上实现不同时,可以使用模版方法模式解决问题。三、模板方法模式分析(Analysis)
抽象类AbstractClass,实现了一个模版方法,定义了一个算法框架,具体子类将重新定义PrimitiveOperation1和PrimitiveOperation1以实现一个算法的步骤。
子类ConcreteClassA和ConcreteClassB,实现PrimitiveOperation1和PrimitiveOperation1以完成算法中与特定子类相关的步骤。
四、实例代码
1、抽象类AbstractClass及其实现
public abstract class AbstractClass {public abstract void doPrimitiveOperation1();public abstract void doPrimitiveOperation2();public void templateMethod(){doPrimitiveOperation1();doPrimitiveOperation2(); System.out.println("模板方法执行完"); }}
public class ConcreteClassA extends AbstractClass {public void doPrimitiveOperation1() {System.out.println("具体实现类"+this.getClass().getSimpleName()+"方法1实现");}public void doPrimitiveOperation2() {System.out.println("具体实现类"+this.getClass().getSimpleName()+"方法2实现");}}
public class ConcreteClassB extends AbstractClass {public void doPrimitiveOperation1() {System.out.println("具体实现类"+this.getClass().getSimpleName()+"方法1实现");}public void doPrimitiveOperation2() {System.out.println("具体实现类"+this.getClass().getSimpleName()+"方法2实现");}}
2、客户端调用
public class Client {public static void main(String[] args) {AbstractClass abstractClass = new ConcreteClassA(); abstractClass.templateMethod(); abstractClass = new ConcreteClassB(); abstractClass.templateMethod();}}
运行结果:
- 设计模式--行为型--模板模式
- 行为型设计模式-模板方法模式
- 行为型设计模式-模板方法模式
- 【JavaScript设计模式】行为型设计模式--模板方法模式
- 设计模式 - 行为型模式 - 模板方法模式
- Java设计模式之行为型模式(模板模式)
- [设计模式-行为型03]-模板方法
- 设计模式 行为模式之模板模式
- 设计模式-行为-模板方法
- 行为型模式-模板模式
- 设计模式笔记(14)---模板方法模式(行为型)
- 设计模式(22)-行为型-模板方法模式(Template Method)
- 设计模式16:模板方法模式【行为型】
- java设计模式(行为型)之模板方法模式
- [设计模式-行为型]模板方法模式(Template Method)
- 设计模式-行为型之模板方法模式
- 设计模式(7)模板模式--行为型
- Java设计模式(行为型)之-模板方法模式
- PCB多层板设计总结-层的分布设置
- [Android分享] 关闭正在运行的应用(精华板)
- 浅谈下我的工作、生活
- css样式
- POJ 1469 COURSES
- 设计模式--行为型--模板模式
- PLSQL Developer SQL窗口语句的复制乱码问题
- 2012年11月26日16:27:37 工作感悟
- PHP递归运用之删除级联目录
- make clean 与 make distclean 的区别
- html标签大全(html5)
- QX项目实战-12.基础架构试验三:异构数据库同步
- Linux常用命令大全
- js中常用的语句