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设计模式:状态模式和模板模式。 状态模式(State Pattern) --------------------- 状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变它的行为。状态模式将状态封装...
5. 文件中提到的24种设计模式,涵盖了大多数常用的模式。例如,代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、...
### Java常用设计模式—追美眉技术详解 #### 设计模式概述 设计模式是一种软件设计中的通用解决方案,它描述了一类问题以及解决该问题的方法。通过应用这些模式,开发人员可以编写出更易于理解、扩展和维护的代码...
下面我们将深入探讨标题和描述中提到的四种设计模式:单例模式、工厂模式、观察者模式以及模板模式。 1. **单例模式**: 单例模式是一种限制类实例化次数为一次的设计模式,确保在整个应用程序中只有一个实例存在...
设计模式是软件工程中的一种最佳实践,它们是解决常见问题的模板,可以提高代码的可读性和可维护性。在自定义控件中,设计模式的应用至关重要。例如: 1. **组合模式**:组合模式允许我们将多个小的组件组合成一个...
单例设计模式是一种常用的对象创建型设计模式,其目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式经常用于资源管理器、线程池、日志对象等场景,以避免多个实例造成的资源浪费。 **单例设计模式的...
本书还附带了一些基础类库的介绍,例如列表(List)、迭代器(Iterator)、列表迭代器(ListIterator)、点(Point)、矩形(Rect)等,这些都是在实现设计模式时常用的数据结构。 #### 十一、参考文献与索引 **参考文献与...
模板方法设计模式是一种在面向对象设计中常用的行为型设计模式,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。这种模式允许子类在不改变算法整体结构的情况下,重定义某些特定步骤。 在软件开发中,模板...
总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...
python 项目里常用的设计模式 单例模式 组合模式 策略模式 抽象工厂 代理模式 工厂模式 观察者模式简单工厂 建造者模式 模板模式 桥接多维度 桥接模式 适配器模式 外观模式 享元模式 责任链组合模式
### .NET 23种常用设计模式 #### 概述 设计模式是在软件工程领域内被广泛采用的一种软件设计思路,旨在解决特定类型的问题。在.NET框架中,这些设计模式同样适用并能帮助开发者构建更加灵活、可扩展及易于维护的...
在软件工程领域,设计模式是解决常见问题的模板或最佳实践,它们被广泛应用于构建可扩展、可维护的代码库。工厂模式是其中最基础也是最常用的一种设计模式,主要解决对象创建的问题,使得代码在面对多种产品类型时更...
以下是关于标题和描述中提到的Java常用设计模式的详细解释: 1. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。在Java中,通常通过私有构造器和静态工厂方法实现。双检锁(Double-Check Locking)...
设计模式的应用不仅限于上述几种,还包括适配器模式、装饰器模式、观察者模式、责任链模式、命令模式、迭代器模式、访问者模式、模板方法模式等。它们都是软件设计的宝贵工具,帮助我们写出更优雅、可复用的代码。...
设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板或蓝图。在Java编程中,设计模式的应用极大地提高了代码的可读性、可维护性和可复用性。《设计模式——Java语言中的应用》这本书深入探讨...
模板方法模式是面向对象设计模式中的行为模式之一,它在Java编程中有着广泛的应用。这种模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定...
这个“EXCEL常用模板-人事模板-档案类-通讯录模板.zip”文件提供了一个预设的通讯录结构,便于快速创建和维护人员档案。以下是这个模板可能包含的关键知识点和使用方法: 1. **工作表结构**:通讯录模板通常包含多...
Android 设计模式系列还包括工厂方法模式、抽象工厂模式、创建者模式、原型模式、单例模式、适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式、解释器模式、模板方法模式、职责链模式、命令...
单例模式是一种常用的创建型设计模式,它保证一个类仅有一个实例,并提供一个全局访问点。单例模式通常用于控制资源的共享访问,例如数据库连接池、日志管理器等。 #### 实现方式 - **构造函数私有化**:防止外部...
Java语言是实现这些设计模式的常用平台,因为它提供了丰富的面向对象特性,如封装、继承和多态。通过使用设计模式,Java开发者能够更好地遵循“开闭原则”——对扩展开放,对修改关闭,这意味着在不改变已有代码的...