首页 > 其他分享 >TEMPLATE METHOD(模板方法)—类行为型模式

TEMPLATE METHOD(模板方法)—类行为型模式

时间:2025-01-15 19:29:58浏览次数:3  
标签:定义 一个 子类 算法 文档 TEMPLATE METHOD 模板

1. 意图
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Te m p l a t e M e t h o d使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
2. 动机
考虑一个提供A p p l i c a t i o n和D o c u m e n t类的应用框架。A p p l i c a t i o n类负责打开一个已有的以外部形式存储的文档,如一个文件。一旦一个文档中的信息从该文件中读出后,它就由一
个D o c u m e n t对象表示。
用框架构建的应用可以通过继承A p p l i c a t i o n和D o c u m e n t来满足特定的需求。例如,一个
绘图应用定义D r a w A p p l i c a t i o n和D r a w D o c u m e n t子类;一个电子表格应用定义S p r e a d s h e e t -A p p l i c a t i o n和S p r e a d s h e e t D o c u m e n t子类,如下页图所示。
抽象的A p p l i c a t i o n类在它的O p e n D o c u m e n t操作中定义了打开和读取一个文档的算法:

O p e n D o c u m e n t定义了打开一个文档的每一个主要步骤。它检查该文档是否能被打开,创建与应用相关的D o c u m e n t对象,将它加到它入的文档集合中,并且从一个文件中读取该D o c u m e n t。
我们称O p e n D o c u m e n t为一个模板方法(template method)。一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体的行为。A p p l i c a t i o n的子类将定义检查一个文档是否能够被打开( C a n O p e n D o c u m e n t)和创建文档( D o C r e a t e D o c u m e n t)的具体算法步骤。D o c u m e n t子类将定义读取文档( D o R e a d)的算法步骤。如果需要,模板方法也可定义一个操作(A b o u t To O p e n D o c u m e n t)让A p p l i c a t i o n子类知道该文档何时将被打开。
通过使用抽象操作定义一个算法中的一些步骤,模板方法确定了它们的先后顺序,但它允许A p p l i c a t i o n和D o c u m e n t子类改变这些具体步骤以满足它们各自的需求。

标签:定义,一个,子类,算法,文档,TEMPLATE,METHOD,模板
From: https://blog.csdn.net/workflower/article/details/145111848

相关文章

  • Alertmanager 配置报警模板,时间要设置东八区
    在Alertmanager中配置报警模板时,默认的时间格式是UTC时间。如果需要将时间设置为东八区(UTC+8),可以通过Go模板语言中的时间格式化函数来实现。以下是配置东八区时间的详细步骤:1.修改模板文件在模板文件中,使用Go模板的time函数将时间转换为东八区。示例模板文......
  • 织梦CMS进阶 - 修改织梦网站模板的详细步骤与实用技巧
    织梦(DedeCMS)是一款流行的开源内容管理系统,广泛应用于企业官网和个人博客建设。以下是关于如何修改织梦网站模板的一些基本指导和高级技巧:登录后台管理界面使用管理员账号登录织梦后台,进入“模板管理”模块。在这里您可以上传、编辑或删除现有的模板文件。同时,通过修改CSS文件来......
  • idea中,在pom文件引入jwt使用,JwtTes测试报错Cannot resolve method ‘withClaim(String
    JwtTes测试类中报错Cannotresolvemethod'withClaim(String,Map<String,Object>)'  1.报错报这个错误可能是jwt版本问题,下面请看我的报错文件JwtTest.javapom.xml找了好一会,以为是没加分号的原因,以为是用了中文标点,结果检查了一遍,代码没有问题,标点没有问题。......
  • 【C++指南】模板 深度解析
         ......
  • R语言caret包实战:构建xgboost模型(xgbDART算法、使用的dropout思想)构建回归模型、通过m
    R语言caret包实战:构建xgboost模型(xgbDART算法、使用的dropout思想)构建回归模型、通过method参数指定算法名称、通过trainControl函数控制训练过程目录R语言使用caret包构建xgboost模型(xgbDART算法、使用的dropout思想)构建回归模型、通过method参数指定算法名称、通过trainCo......
  • 树状数组【模板】
    https://www.luogu.com.cn/problem/P3374#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'#definelowbit(x)x&(-x)usingll=longlong;usingpii=pair<int,int>;constdoublePI=acos(-1);constintN=5e5+10......
  • 修改fduthesis模板为book模板
    参考曾详东模板:曾详东fduthesis去掉论文格式的封面:style/auto-make-cover=false,(原来false为true!)cls文件:%Loadthebaseclasswithopenanyandonesideoptions\LoadClass[openany,oneside]{ctexbook}(前后页面对齐,章节之间不留空白页)添加如:注释,......
  • WPF ListBox ItemTemplate DataTemplate
    <Windowx:Class="WpfApp137.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • WPF ListBoxItem ControlTemplate
    <Windowx:Class="WpfApp136.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • VS Code中创建Markdown模板
    在VSCode中Ctrl+N新建文件时,键入简洁的前缀,自动生成Markdown文件模板。配置VSCode用户设置Ctrl+Shift+P搜索OpenUserSettings.json在json文件中添加以下代码:"[markdown]":{"editor.quickSuggestions":true}创建Markdown模板Ctrl+Shift+P搜索snippets......