模板方法(Template Method)模式 属于对象的行为模式。
1. 定义
定义一个操作中算法的骨架,将一些步骤执行延迟到其子类中。模板方法模式是基于继承的代码复用的基本技术,该模式的结构和用法也是面向对象设计的核心。
2. 使用的原因
当一个算法的基本骨架已能确定,但算法的实现部分会根据具体情况有所变动,或为了提高算法实现的灵活性时,可考虑采用模板方法(Template Method)模式。
3. 适用的情况举例
eg. 你计划了向所喜欢的女孩子表白,你已经想好了当晚表白时要进行的具体步骤,例如第一步打电话约该女生出来,第二步与该女生去一家咖啡厅或附近的某公园表白,第三步.......,但还没想好具体的某些步该怎么样做时,你可以先定义一个抽象的模板,然后请各好友或自己闭关想出一种或多种来实现之;
4. 类图结构及说明
1)类图结构如下所示:
2)类说明
i) AbstractClass:抽象模板类,该类定义了一个或多个抽象操作,以便让子类实现;并且它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象步骤中,推迟到子类实现。
ii)ConcreteClass:具体模板类,该类实现父类AbstractClass所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤;每一个抽象模板角色都可以有任意多个具体模板角色与之对应,而每一个具体模板角色都可以给出这些抽象方法的不同实现。
5. 使用举例
1) 需求:Amigo的老妈大人打算找个女婿,特意为其未来女婿定义需闯的五关,第一关:基本条件,年龄要求:25-30;第二关:考验其是否love她的女儿;第三关:检验其是否老实不花心;第四关:考察其是否尊老爱幼;第五关:观察该人是否勤奋好学有能力。对于来“应聘”的人(也许还有不少,貌似美美地说),对这五关都会有不同的表现方式;
2)分析:Amigo一瞄,嘿,这倒是个模板方法方式的典型好例哦,选女婿的算法骨架已出来了,就是这五关哈,各个“应聘”者提供了第二到五关的具体实现;
3)代码参考实现:
i)抽象考察模板类
public abstract class 考察模板 {
public void 选女婿() {
第一关();
第二关();
第三关();
第四关();
第五关();
}
public final void 第一关() {
//年龄限制:25-30
}
public abstract void 第二关();
public abstract void 第三关();
public abstract void 第四关();
public abstract void 第五关();
} ii)考察模板具体实现类,A君过来应聘,经过一段时间的考察,Amigo's mother总结了其实现,具体如下:
public class 应聘人1的实现 extends 考察模板 {
public void 第二关() {
//跟Amigo's mother's daughter出去的时候老看路边美女,汗
}
public void 第三关() {
//手机短信响不停,全是"亲爱的"
}
public void 第四关() {
//坐公交车时不给老人小孩让位子,现在的小伙子啊
}
public void 第五关() {
//一有空就在家里玩游戏,上班猛聊QQ
}
}
分享到:
相关推荐
**Pro/E(Creo Parametric)工程图培训详解** Pro/E,现称为Creo Parametric,是由美国PTC公司开发的一款强大的三维参数化设计软件,广泛应用于产品设计、机械工程和工业制造等领域。其工程图模块是产品设计过程中...
代码中部分为原创,部分摘自互联网,时间长了,也搞不清除哪些是自己写的哪些不是,具体在每个文件中都做了说明。如涉及侵权,请即时联系小朱。 本人水平有限,源码中难免有所疏漏,请朋友多多指正,也欢迎来技术...
- 摘自互联网的70个批处理实例(如"bat70合1")提供了丰富的实践素材,你可以通过学习和分析这些例子,了解各种批处理技巧,并结合自己的需求进行创新,编写出更有针对性的批处理脚本。 总的来说,批处理是一种...
网页版本,摘自互联网,Prolog教程 人工智能 智能 AI,需要的朋友可以直接从这下载
本次分享的PPT文件摘自某互联网大会内部资料,主题聚焦在制造业迈入工业大数据时代的变迁,以及互联网工业大会上的行业新动态。以下从多个维度详细解读文件中提及的核心知识点。 1. 徐工集团与工业信息化的发展历程...
Lyn Cantor,Sandvine首席执行官关于全球互联网现象数据本版《全球互联网》中的数据现象报告摘自Sandvine的已安装160多个Tier 1和Tier 2的已安装基座,全球移动和WiFi运营商。那个报告不包含来自中国或印度,但数据...
网页技术在互联网信息检索中扮演着至关重要的角色,而搜索引擎则是获取信息的主要途径。 首先,搜索引擎的工作流程通常包括四个步骤:网页抓取、网页消重、建立索引和提供检索服务。网页抓取是搜索引擎发现和收集...
【C/C++编程知识点】 1. **BOOL类型与零值比较**:在C++中,BOOL类型的变量通常用于表示真伪或开关状态。正确的比较方式是`if (flag)`和`if (!flag)`,而不是使用等于TRUE或FALSE的比较,因为这可能会导致不良的...
在当今移动互联网时代,用户体验(User Experience, UX)成为了衡量一个应用程序是否成功的关键因素之一。而用户体验的核心组成部分之一就是用户界面(User Interface, UI)设计。良好的UI设计不仅能提升产品的美观度,...
糖尿病是一组因胰岛素绝对或相对分泌不足和(或)胰岛素利用障碍引起的碳水化合物、蛋白质、脂肪代谢紊乱性疾病,以高血糖为主 要标志(摘自百度健康医典)。人群按照国际通用WHO糖尿病专家委员会提出的分型标准...
(摘自《交互设计指南》,本文是阅读《交互设计指南》后对当下交互设计的一个总结,文中会引用书中内容)。 交互设计是一种艺术—一种应用艺术,类似于家具制造;交互设计不是科学,尽快也产生了一些可靠的设计准则...
OPhone是基于Linux、面向移动互联网的终端基础软件及系统解决方案。 OPhone SDK是专为OPhone平台设计的软件开发套件,它包括OPhone API,OPhone模拟器,开发工具,示例代码和帮助文档(摘自OPhone官方网站:...
---------摘自设计沟通十器人物角色的价值:1.角色是研究目标受众后得到的结果,取决于用户调研。2.是所有后续目标导向设计的基础3.精确地表达用户的需求和期望4.角色不是真实的人物,但是在设计过程中代表真真是...
互联网广告策略与匹配与定位与创意 这是有关广告中的策略,匹配,定位和创意的研究和应用论文的集合。 这些作品摘自公共网站。 如果有任何作者不希望在此处列出他们的论文,请随时与我联系( )。 匹配和定位(召回...
计算机基础知识是IT专业人员必修的课程,涵盖了...以上知识点,虽然摘自文件的片段内容,但它们各自代表了计算机科学领域的广泛知识面。这些概念是构建IT专业知识体系的基础,并且对于理解更高级的概念和技能至关重要。
以上知识点摘自给定文件内容,并以通顺的语言组织,详细描述了2020年上半年中国TMT行业的投资和市场趋势,以及政策环境变化对行业的影响。通过这些分析,读者能够对中国TMT行业的最新动态和发展方向有一个全面和深入...