`

模板方法模式要点

 
阅读更多

模板方法模式是比较简单的模式,在框架中用处也很多,这里介绍下基本实现,和几个理解上的关键点。

 

1、定义和类图

    定义一个抽象类,将部分逻辑使用具体方法或构造方法在抽象类中实现,另一部分逻辑,在抽象类中定义成抽象方法,强迫子类是实现。这样,不同的子类对于抽象方法的实现逻辑就可以不一样。这就是模板方法模式的意义。类图如下:


                                                

      从类图中可以看到,抽象类中有一个模板方法template Method,一个抽象方法abstract Method,一个钩子方法hook Method,还有一个具体方法concrete Method. 一般模板方法只有一个,作为主逻辑,调用其他方法,其他类型可以有多个。子类中,实现了abstract Method 和 hook Method.

 

关键点:

  1. 模板方法中定义了主流程的逻辑,调用abstract Method,hook Method 和 concrete Method,从而完成整个逻辑
  2. 模板方法中最重要的一点,就是客户端代码中,调用的是子类对象的模板方法,比如上面类图中的concreteTemplate.templateMethod()。因为子类是继承了抽象类的,所以抽象类里的方法,子类自然可以使用。但是抽象类里的抽象方法和hook方法并没有实现,所以真正调用的还是子类自己的抽象方法和hook方法。这是一个反向控制的结构,是父类调用子类的方法,而不是常见的子类调用父类,这个是模板方法的典型应用
  3. 抽象方法在子类中实现,重要的是参与,实现这一个环节,使主流程可以跑通。策略模式使用接口而不是抽象类实现,虽然类图有点相似,本质与模板方法完全不同
  4. hook Method,其实是可有可无的。在框架中,也不一定叫这个名字,比如servlet里面的doGet(), doPost() 之类,都是这种。这么用的主要用意,是为了让用户或者程序员自己继承框架的类,然后实现这几个钩子方法,那么在运行时,就是让框架可以调用了用户的代码。比如典型的例子,像hadoop里的Map和Reduce
  5. 模板方法模式,应用场景一般是,一些功能的大部分逻辑相同,但是一些具体的逻辑不一样,如果直接写在一个类里,需要不断的用if else,或者类似的方法去判断,使用模板方法模式可以避免这种情况。当具体逻辑添加或者删除的时候,只需要修改那个对应的类,更方便的扩展。

最后贴一段代码。

 

public abstract Class Template {

	//定义一个主流程,子类一般不能去改变
    protected void templateMethod() {
    	//调用具体方法,该类中已实现
    	concreteMethod();

    	//抽象方法
    	abstractMethod();

        //钩子方法
    	hooks();	
    }

    private void concreteMethod() {
    	//业务逻辑
    }

    protected void abstractMethod();

    protected void hooks();
}

public Class ConcreteTemplate {
	@Override 
	protected void abstractMethod() {
		//业务逻辑
	}

	@Override
	protected void hooks() {
		//什么都不干
	}
}

public Class Client {
	public static void main(String[] args) {
		Template template = new ConcreteTemplate();
		template.templateMethod();
	}
}

 

 

 

  • 大小: 34.7 KB
分享到:
评论

相关推荐

    Python设计模式之模板方法模式实例详解

    总结一下,模板方法模式在Python中的应用主要包含以下几个要点: 1. **定义模板方法**:在抽象类中定义一个模板方法,这个方法包含了算法的基本框架,通常包括一些基本操作和调用抽象方法或钩子方法。 2. **定义...

    23种设计模式知识要点.pdf_设计模式_

    3. **行为型模式**:包括责任链模式、命令模式、解释器模式、迭代器模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。这类模式关注于对象之间的交互和行为。 - 责任链模式让多个对象...

    23种设计模式知识要点1

    模板方法模式包含一个模板方法,该方法定义了算法的基本结构,并且将一些步骤留给了子类来实现。这样做的好处是保持了代码的结构一致性,同时允许子类定制部分行为。 在Java设计模式中,这四种模式是基础且常用的...

    要点解释说明PPT文本框模板.rar

    2. **模板设计**:模板是预先设定好的设计模式,包括颜色主题、字体、背景样式等。使用模板可以快速统一演示文稿的视觉风格,节省设计时间。"要点解释说明"模板可能包含了简洁、明快的设计,便于突出展示关键信息点...

    23种设计模式知识要点整理

    - 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 以上就是23种设计模式的核心概念和应用场景。理解并熟练运用这些设计...

    23种设计模式知识要点.zip

    20. **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 21. **备忘录模式**:在不破坏封装性的前提下,捕获一个对象的...

    图解Java设计模式.zip

    3. **行为型设计模式**:这类模式主要涉及对象之间的责任分配,包括策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、解释器模式和状态模式。如观察者模式定义了对象间的一种一...

    英语写作范文/作文模板/基本模式(3个WORD)

    同时,范文中的论据支持、论证方法和篇章结构都是值得学习的要点。在学习过程中,可以尝试对范文进行拆解,理解每一部分的作用,然后尝试仿写,以加深理解和应用。 除了上述资源,提升英语写作还需要广泛的阅读,...

    模式识别复习要点.pdf

    在汽车车牌自动识别中,通常需要经过图像采集、预处理、车牌定位、字符分割和字符识别等多个步骤,这些过程涉及到模式识别方法,如边缘检测、模板匹配和OCR(光学字符识别)技术。 统计决策理论在模式识别中扮演...

    JAVA_23种设计模式知识要点.pdf

    6. 模板方法模式(Template Method Pattern)定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 7. 组合模式(Composite Pattern)...

    aspx页面网站模板

    通过理解以上要点,你可以更好地利用"aspx页面网站模板"来创建出专业且个性化的网站。记住,尽管模板可以提供快速的起点,但最终的网站应当符合你的独特需求和品牌形象。在定制过程中,不断学习和优化,才能真正发挥...

    专题资料(2021-2022年)EPC项目管理要点投标方案共3个模板.docx

    4. **进度控制要点**:制定了项目进度计划,明确了关键路径和里程碑,提出了进度监控方法,以保证项目按期完成。 5. **费用估算及控制要点**:涵盖预算编制、成本控制、变更订单管理,防止超支,确保项目经济效益。...

    GJB研制总结(模板).docx

    - 产品主要使命和任务:定义了产品在不同场景下的使用模式,例如XXX使用模式和XXX使用模式,满足特定作战需求。 - 战术技术指标:列出了关键性能参数,如XXX(参数1)和XXX(参数2)及其相应的指标要求。 - 产品...

    李建忠 C#面向对象设计模式纵横谈(25):设计模式总结

    3. 行为型模式:这类模式关注对象间的交互和职责分配,包括策略(Strategy)、模板方法(Template Method)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录...

    java24种设计模式

    - 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - 访问者模式(Visitor):表示一个作用于某对象...

    学必备c++50大要点

    - **要点**: 学习常用的设计模式和软件工程原则。 - **描述**: 设计模式可以帮助解决常见的软件设计问题,而软件工程原则则是保证软件质量的关键。 #### 9. 面向对象编程思想 - **要点**: 深入理解面向对象的思想,...

    设计模式面试专题.zip

    - **行为型模式**:主要处理对象之间的交互和责任分配,如命令模式、解释器模式、迭代器模式、访问者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和职责链模式。 2. **常用设计模式详解** - ...

    员工薪资确认单模板人力资源

    这些都是员工在日常工作中需要关注和遵守的要点,有助于维护公司的内部秩序和外部形象。 最后,生效日期标志着薪资确认单开始约束员工的起点,也是员工开始享有相应薪酬权益的时间。确保了薪酬体系的稳定性和连续性...

    EPC项目管理要点(投标方案-共3个模板).docx

    EPC(Engineering, Procurement, and Construction)即设计、采购、施工一体化模式,是国际通行的一种工程项目管理模式。EPC项目管理涵盖了从项目策划、设计、采购、施工到试运行等一系列过程,其核心在于提供一个...

Global site tag (gtag.js) - Google Analytics