- 浏览: 25648 次
- 性别:
- 来自: 上海
文章分类
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
public abstract class AbstractClass {
public abstract void doPrimitiveOperation1();
public abstract void doPrimitiveOperation2();
public final void templateMethod() {
doPrimitiveOperation1();
doPrimitiveOperation2();
}
}
按照模板方法模式的定义和结构,定义出一个抽象的父类,在这个父类中定义模板方法。对于公共的功能,就放到这个父类中实现,而这个父类无法决定的功能,就延迟到子类去实现。
模板方法模式采用抽象方法而不是接口的原因:
接口是一种特殊的抽象类,所有接口中的属性自动是常量,也就是public static final的,而所有接口中的方法必须是抽象的。
抽象类:抽象类不一定包含抽象方法;有抽象方法的类一定是抽象类。
通常在既要约束子类的行为,又要为子类提供公共功能的时候使用抽象类。
好莱坞法则:不要调用我,让我来调用你。
在模板方法中,如果需要得到某些对象实例的话,可以考虑通过工厂方法模式来获取,把具体构建对象的实现延迟到子类中去。
在java中,还有另外一个方法可以实现同样的功能或效果——java回调技术。通过回调在接口中定义的方法,调用到具体的实现类中的方法,其本质同样是利用java的动态绑定技术。使用匿名内部类来实现回调方法。
模板方法模式的一个非常典型的应用,就是实现排序功能。
原语操作:就是在模板中定义的抽象操作。
钩子操作:在模板中定义,并提供默认实现的操作。
public abstract class AbstractClass {
public abstract void doPrimitiveOperation1();
public abstract void doPrimitiveOperation2();
public final void templateMethod() {
doPrimitiveOperation1();
doPrimitiveOperation2();
}
}
按照模板方法模式的定义和结构,定义出一个抽象的父类,在这个父类中定义模板方法。对于公共的功能,就放到这个父类中实现,而这个父类无法决定的功能,就延迟到子类去实现。
模板方法模式采用抽象方法而不是接口的原因:
接口是一种特殊的抽象类,所有接口中的属性自动是常量,也就是public static final的,而所有接口中的方法必须是抽象的。
抽象类:抽象类不一定包含抽象方法;有抽象方法的类一定是抽象类。
通常在既要约束子类的行为,又要为子类提供公共功能的时候使用抽象类。
好莱坞法则:不要调用我,让我来调用你。
在模板方法中,如果需要得到某些对象实例的话,可以考虑通过工厂方法模式来获取,把具体构建对象的实现延迟到子类中去。
在java中,还有另外一个方法可以实现同样的功能或效果——java回调技术。通过回调在接口中定义的方法,调用到具体的实现类中的方法,其本质同样是利用java的动态绑定技术。使用匿名内部类来实现回调方法。
模板方法模式的一个非常典型的应用,就是实现排序功能。
原语操作:就是在模板中定义的抽象操作。
钩子操作:在模板中定义,并提供默认实现的操作。
发表评论
-
访问者模式Visitor预留通路,回调实现
2014-03-13 16:55 379表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
桥接模式Bridge分离抽象和实现
2014-03-13 16:55 491将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接 ... -
职责链模式Chain of Responsibility分离职责,动态组合
2014-03-12 17:25 341使多个对象都有机会处 ... -
装饰模式Decorator动态组合
2014-03-12 17:00 277动态地给一个对象添加 ... -
解释器模式Interpreters分离实现,解释执行
2014-03-12 16:27 295给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解 ... -
享元模式Flyweight分离与共享
2014-03-12 13:20 301运用共享技术有效地支持大量细粒度的对象。 安全实体:就是被系 ... -
备忘录模式Memento保存和回复内部状态
2014-03-11 17:47 434在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外 ... -
状态模式State根据状态来分离和选择行为
2014-03-11 17:20 399允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改 ... -
策略模式Strategy分离算法,选择实现
2014-03-11 15:26 418迪米特法则:LoD,最少知识原则。 如果两个类不必彼此直接通信 ... -
组合模式Composite统一叶子对象和组合对象
2014-03-07 18:18 308将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使 ... -
迭代器模式Iterator 控制访问聚合对象中的元素
2014-03-07 17:57 410提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该 ... -
命令模式Command 封装请求
2014-03-07 16:26 381将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数 ... -
观察者模式Observer订阅模式-触发联动
2014-03-07 11:19 383定义对象间的一种一对 ... -
代理模式Proxy 为别人做嫁衣(控制对象访问)
2014-03-06 00:39 332为其他对象提供一种代理以控罪对这个对象的访问。 代理大致被分为 ... -
中介者模式Mediator 封装交互
2014-03-06 00:19 370用一个中介对象来封装 ... -
原型模式Prototype 克隆生成对象
2014-03-06 00:19 567用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ... -
生成器模式Builder 分离整体构建算法和部件构造
2014-03-06 00:19 307将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ... -
抽象工厂模式 Abstract Factory 选择产品簇的实现
2014-03-06 00:20 417工厂方法模式或简单工 ... -
工厂方法模式Factory Method延迟到子类来选择实现
2014-03-05 18:12 951定义一个用于创建对象 ... -
单例模式Singleton某个类只需要一个类实例
2014-03-05 16:46 426保证一个类只有一个实例,并提供一个访问它的全局访问点。 懒汉 ...
相关推荐
模板方法模式(Template Method)是设计模式中行为型模式的一种,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这个模式在C++编程中有着...
5.选择对应的模板(选中模板后点VIEW可以打开模板进行查看/编辑) 模板是T4模板,置于Templete文件夹下,程序运行时会自动把此目录下的所有T4文件读出来. 6.点TEST查看根据第一个模板生成的效果 7.设置命名参数/数据...
MySQL数据库CodeSmith模板是一种高效的代码生成工具,它利用CodeSmith的强大功能,自动化地根据MySQL数据库中的表结构生成相应的代码,从而极大地提高了开发效率。CodeSmith是一款流行的数据驱动的代码生成器,它...
VS模板是Visual Studio中的一个重要组成部分,它为开发者提供了一种快速创建新项目或文件的便捷方式。Visual Studio作为Microsoft开发的一款强大的集成开发环境(IDE),广泛应用于各种软件开发任务,包括但不限于C#...
总之,《C++标准模板库(The C++ Standard Template Library)》一书不仅详细介绍了STL的核心概念和使用方法,还深入探讨了其设计思想和实践技巧,是每一位C++程序员都应该掌握的重要资源。通过学习和应用STL,程序员...
模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 通常有两种形式:...
Redis_Templete是一个关于在不使用Spring Data Redis的情况下操作Redis的示例项目。在这个项目中,我们将探讨如何直接通过Jedis或Lettuce等客户端库与Redis进行交互,以实现常见的数据存储和检索功能。虽然Spring ...
总的来说,SAGE LaTeX模板提供了一种高效、专业的方法,让科研工作者在撰写学术论文时,能方便地进行数学计算,同时保证了文档的美观和规范。对于需要处理大量数学表达式和计算的领域,如数学、物理和工程学,这款...
Matlab 模板 - 传感器故障诊断方法 本文提出了一种基于经验模式分解(EMD)和支持向量机(SVM)的传感器故障诊断方法。该方法通过对传感器输出信号进行经验模态分解,得到多个固有模态函数(IMF),然后对每个 IMF ...
使用Elsevier提供的Word模板,作者可以确保论文的格式符合期刊的出版标准,包括标题、摘要、引言、材料与方法、结果、讨论、结论、参考文献等各部分的样式。这些模板通常会预设好字体、字号、段落间距、页边距等格式...
“Rolly Vortex Templete 1.0.2.rar”是一款基于Unity引擎的项目模板,专为游戏开发者设计,旨在帮助他们快速搭建具有动态物理效果的3D游戏场景。这款模板的核心特色在于其独特的“Vortex”(漩涡)机制,可以实现...
### Hindawi Word模板知识点概述 #### 一、模板概述与适用范围 Hindawi出版社旗下的期刊采用统一的Word模板作为投稿的基本格式规范。该模板旨在为作者提供一个标准化的文档结构,确保论文在形式上的一致性和专业性...
v3x_templete是指模板数据表,包括id、名称、排序、创建时间、描述等信息。 v3x_templete_auth v3x_templete_auth是指模板授权数据表,包括id、名称、排序、创建时间、描述等信息。 v3x_templete_config v3x_...
《基于ARM7的板级支持包(BSP)模板详解》 在嵌入式系统开发领域,板级支持包(Board Support Package,简称BSP)是至关重要的组件,它为特定硬件平台提供操作系统运行所需的底层驱动程序和服务。本文将深入探讨以...
flow chart_templete.xlsx
适用于LinuxServer.io Docker容器的Portainer应用程序模板 这些可用于通过预定义设置轻松部署。 模板基于提供的数据。 请记住以下几点。 LinuxServer.io不支持这些模板 正在生成模板,因此我无法接受添加模板的...
Elsevier-template.doc 文档模板详解 Elsevier-template.doc 是 Elsevier 出版社提供的一种双栏 Word 模板,用于撰写期刊论文。下面将对该模板的标题、描述、标签和部分内容进行详细解释。 标题:Elsevier-...
Java连接MySQL模板是Java开发中常见的一种技术,用于在Java应用程序中与MySQL数据库进行交互。在Java中,我们通常使用JDBC(Java Database Connectivity)API来实现这一目标。以下是关于这个主题的详细知识: 1. **...
《IEBook模板编辑器——轻松打造专业电子书的利器》 IEBookTemplateMaker,顾名思义,是一款专为制作IEBook电子书而设计的强大工具。这款软件集模板编辑与制作功能于一体,使得即便是没有专业设计背景的用户也能...