`

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

 
阅读更多
package org.design.patterns;

/**
 * 模板方法模式: 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。
 * 模板方法使得子类在不改变算法结构的情况下,重新定义算法中的某些步骤。
 */
//抽象类
public abstract class AbstractTemplateMethod {
 /**
  * 模板方法定义了算法的实现步骤,一般定义为final类型的,使得子类无法覆盖 其中的抽象方法有待子类去实现
  */
 final void templateMethod() {
  // "必须" 由子类实现的方法
  primitiveOperation1();
  primitiveOperation2();
  primitiveOperation3();
  // "不需" 由子类实现的方法
  concreteOperation();
  // "可选" 由子类实现的方法
  hook();
 }

 /** 需要具体子类实现 */
 abstract void primitiveOperation1();

 abstract void primitiveOperation2();

 abstract void primitiveOperation3();

 // 在该抽象类中已经做了实现,并且可以声明为final,使得子类无法覆盖
 final void concreteOperation() {
  System.out.println("AbstractTemplateMethod.concreteOperation()");
 }

 // 挂钩方法,空实现,子类可以重写该方法实现所需的操作,当然也可不做处理
 void hook() {
 }

}

//实现类
class TemplateMethodImpl extends AbstractTemplateMethod {

 @Override
 void primitiveOperation1() {
  System.out.println("TemplateMethodImpl.primitiveOperation1()");
 }

 @Override
 void primitiveOperation2() {
  System.out.println("TemplateMethodImpl.primitiveOperation2()");
 }

 @Override
 void primitiveOperation3() {
  System.out.println("TemplateMethodImpl.primitiveOperation3()");
 }

 @Override
 void hook() {//可选择实现
  super.hook();
 }
 
//    public static void main(String[] args) {
//    new TemplateMethodImpl().templateMethod(); 
// }
}
//===========================================================================
/*
 * 相关模式比较:
 * 
 * 模板方法:子类决定如何实现算法中的步骤(强调的是定义算法骨架,由子类做具体实现)
 * 
 * 策略:           封装可互换的行为,然后使用委托来决定要采用哪一个行为(强调的是互换多个"完整"的算法)
 * 
 * 工厂方法:由子类决定实例化那个具体类(和模板方法类似不过强调的是 类的创建是创建类型的模式)
 * 
 */
/*
 * 要点:
 * -"模板方法"定义了算法的步骤,把步骤的实现延迟到子类
 * -模板方法可以定义具体的方法、抽象方法和空实现的钩子方法
 * -为了防止子类对模板方法的修改,可将该方法声明为final类型的
 * -策略模式和模板方法都封装了算法,一个用组合,一个用继承
 * -工厂方法是模板方法的一种特殊版本
 * 
 */
分享到:
评论

相关推荐

    java常用设计模式-状态模式

    今天,我们将讨论两种常用的Java设计模式:状态模式和模板模式。 状态模式(State Pattern) --------------------- 状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变它的行为。状态模式将状态封装...

    java设计模式---诙谐易懂版

    5. 文件中提到的24种设计模式,涵盖了大多数常用的模式。例如,代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、...

    JAVA常用设计模式-追美眉技术详解.doc

    ### Java常用设计模式—追美眉技术详解 #### 设计模式概述 设计模式是一种软件设计中的通用解决方案,它描述了一类问题以及解决该问题的方法。通过应用这些模式,开发人员可以编写出更易于理解、扩展和维护的代码...

    常用设计模式demo代码-design.rar

    下面我们将深入探讨标题和描述中提到的四种设计模式:单例模式、工厂模式、观察者模式以及模板模式。 1. **单例模式**: 单例模式是一种限制类实例化次数为一次的设计模式,确保在整个应用程序中只有一个实例存在...

    自定义控件 - 设计模式 - 良好设计 - ViewPager

    设计模式是软件工程中的一种最佳实践,它们是解决常见问题的模板,可以提高代码的可读性和可维护性。在自定义控件中,设计模式的应用至关重要。例如: 1. **组合模式**:组合模式允许我们将多个小的组件组合成一个...

    设计模式总结-模板设计模式,单例模式(singleTon)

    单例设计模式是一种常用的对象创建型设计模式,其目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式经常用于资源管理器、线程池、日志对象等场景,以避免多个实例造成的资源浪费。 **单例设计模式的...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    本书还附带了一些基础类库的介绍,例如列表(List)、迭代器(Iterator)、列表迭代器(ListIterator)、点(Point)、矩形(Rect)等,这些都是在实现设计模式时常用的数据结构。 #### 十一、参考文献与索引 **参考文献与...

    设计模式教程-模版方法

    模板方法设计模式是一种在面向对象设计中常用的行为型设计模式,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。这种模式允许子类在不改变算法整体结构的情况下,重定义某些特定步骤。 在软件开发中,模板...

    java常用23中设计模式

    总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...

    python 项目里常用的设计模式 组合模式 策略模式 抽象工厂 代理模式 工厂模式 观察者模式 简单工厂 建造者模式 模板模式

    python 项目里常用的设计模式 单例模式 组合模式 策略模式 抽象工厂 代理模式 工厂模式 观察者模式简单工厂 建造者模式 模板模式 桥接多维度 桥接模式 适配器模式 外观模式 享元模式 责任链组合模式

    .NET 23种常用设计模式

    ### .NET 23种常用设计模式 #### 概述 设计模式是在软件工程领域内被广泛采用的一种软件设计思路,旨在解决特定类型的问题。在.NET框架中,这些设计模式同样适用并能帮助开发者构建更加灵活、可扩展及易于维护的...

    设计模式----工厂模式

    在软件工程领域,设计模式是解决常见问题的模板或最佳实践,它们被广泛应用于构建可扩展、可维护的代码库。工厂模式是其中最基础也是最常用的一种设计模式,主要解决对象创建的问题,使得代码在面对多种产品类型时更...

    Java常用设计模式

    以下是关于标题和描述中提到的Java常用设计模式的详细解释: 1. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。在Java中,通常通过私有构造器和静态工厂方法实现。双检锁(Double-Check Locking)...

    JAVA常用设计模式.ppt

    设计模式的应用不仅限于上述几种,还包括适配器模式、装饰器模式、观察者模式、责任链模式、命令模式、迭代器模式、访问者模式、模板方法模式等。它们都是软件设计的宝贵工具,帮助我们写出更优雅、可复用的代码。...

    java的设计模式 《设计模式-java语言中的应用.pdf》

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板或蓝图。在Java编程中,设计模式的应用极大地提高了代码的可读性、可维护性和可复用性。《设计模式——Java语言中的应用》这本书深入探讨...

    Java设计模式之模板方法模式.rar

    模板方法模式是面向对象设计模式中的行为模式之一,它在Java编程中有着广泛的应用。这种模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定...

    EXCEL常用模板-人事模板-档案类-通讯录模板.zip

    这个“EXCEL常用模板-人事模板-档案类-通讯录模板.zip”文件提供了一个预设的通讯录结构,便于快速创建和维护人员档案。以下是这个模板可能包含的关键知识点和使用方法: 1. **工作表结构**:通讯录模板通常包含多...

    android常用设计模式

    Android 设计模式系列还包括工厂方法模式、抽象工厂模式、创建者模式、原型模式、单例模式、适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式、解释器模式、模板方法模式、职责链模式、命令...

    几种常用的设计模式介绍总结

    单例模式是一种常用的创建型设计模式,它保证一个类仅有一个实例,并提供一个全局访问点。单例模式通常用于控制资源的共享访问,例如数据库连接池、日志管理器等。 #### 实现方式 - **构造函数私有化**:防止外部...

    设计模式 - 可复用面向对象软件的基础(高清版).rar

    Java语言是实现这些设计模式的常用平台,因为它提供了丰富的面向对象特性,如封装、继承和多态。通过使用设计模式,Java开发者能够更好地遵循“开闭原则”——对扩展开放,对修改关闭,这意味着在不改变已有代码的...

Global site tag (gtag.js) - Google Analytics