保盛航空 -华北最大国际机票批发商-全球复杂联程机票-团队机票-头等公务舱机票-留学生机票-国际机票
欢迎来到保盛航空 ! 设为主页 | 联系我们
保盛航空
公告:
预售欧美旺季机票,提前预定,价格低于市场价百分之三十左右,详情请咨询:400-677-6095!
破解手机mg老虎机程序,模板方法模式(模板方法设计模式)详解

正在面向对象程序设计过程中,程序员经常会遇到这种状况:设计一个系统时知路了算法所需的闭键步骤,而且确定了这些步骤的执行挨次,但某些步骤的详尽实现还未知,或者说某些步骤的实现与详尽的环境相闭。

比方,去银行办理业务普通要经过以下4个流程:取号、排队、办理详尽业务、对银行工作人员举行评分等,其中取号、排队和对银行工作人员举行评分的业务对每个客户是相同的,能够正在父类中实现,可是办理详尽业务却因人而异,它可以是存款、取款或者转账等,能够延伸到子类中实现。

这样的例子正在生活中另有很多,比方,一幼我每天会起床、用饭、做事、睡觉等,其中“做事”的实质每天可以不同。我们把这些规定了流程或体式的实例界说成模板,答应运用者根据自己的需求去更新它,比方,简历模板、论文模板、Word 中模板文件等。

以下先容的模板方法模式将解决以上相似的问题。
模式的界说与特点 模板方法(Template Method)模式的界说如下:界说一个操作中的算法骨架,而将算法的少许步骤延伸到子类中,使得子类能够不改动该算法结构的状况下沉界说该算法的某些特定步骤。它是一种类举动型模式。

该模式的重要长处如下。

它封装了稳定部分,扩展可变部分。它把以为是稳定部分的算法封装到父类中实现,而把可变部分算法由子类承继实现,便于子类继续扩展。

它正在父类中提取了大众的部分代码,便于代码复用。

部分方法是由子类实现的,于是子类能够通过扩展方式增加相应的功能,符合开关原则。


该模式的重要缺点如下。

对每个不同的实现都需要界说一个子类,这会导致类的个数增加,系统越发重大,设计也越发笼统。

父类中的笼统方法由子类实现,子类执行的结果会影响父类的结果,这导致一种反向的节制结构,它提高了代码阅读的难度。

模式的结构与实现 模板方法模式需要留神笼统类与详尽子类之间的协作。它用到了虚函数的多态性手艺以及“不用挪用我,让我来挪用你”的反向节制手艺。此刻来先容它们的基本结构。
1. 模式的结构 模板方法模式包括以下重要角色。

(1) 笼统类(Abstract Class):掌管给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法组成。这些方法的界说如下。

① 模板方法:界说了算法的骨架,按某种挨次挪用其包括的基本方法。

② 基本方法:是统统算法中的一个步骤,包括以下几种类型。

笼统方法:正在笼统类中声明,由详尽子类实现。

详尽方法:正在笼统类中曾经实现,正在详尽子类中能够承继或沉写它。

钩子方法:正在笼统类中曾经实现,蕴含用于判别的逻辑方法和需要子类沉写的空方法两种。


(2) 详尽子类(Concrete Class):实现笼统类中所界说的笼统方法和钩子方法,它们是一个顶级逻辑的一个构成步骤。

模板方法模式的结构图如图 1 所示。

模板方法模式的结构图


图1 模板方法模式的结构图

2. 模式的实现 模板方法模式的代码如下: package templateMethod; public class TemplateMethodPattern { public static void main(String[] args) { AbstractClass tm=new ConcreteClass(); tm.TemplateMethod(); } } //笼统类 abstract class AbstractClass { public void TemplateMethod() //模板方法 { SpecificMethod(); abstractMethod1(); abstractMethod2(); } public void SpecificMethod() //详尽方法 { System.out.println("笼统类中的详尽方法被挪用..."); } public abstract void abstractMethod1(); //笼统方法1 public abstract void abstractMethod2(); //笼统方法2 } //详尽子类 class ConcreteClass extends AbstractClass { public void abstractMethod1() { System.out.println("笼统方法1的实现被挪用..."); } public void abstractMethod2() { System.out.println("笼统方法2的实现被挪用..."); } }
程序的运行结果如下: 笼统类中的详尽方法被挪用... 笼统方法1的实现被挪用... 笼统方法2的实现被挪用... 模式的应用实例 【例1】用模板方法模式实现出邦留学手续设计程序。

分析:出邦留学手续普通经过以下流程:索取学校资料,提出入学申请,办理因私出邦护照、出境卡和公证,申请签证,体检、订机票、筹备行装,抵达指标学校等,其中有些业务对各个学校是相同的,但有些业务因学校不同而不同,以是比较适适用模板方法模式来实现。

正在本实例中,我们先界说一个出邦留学的笼统类 StudyAbroad,内里包括了一个模板方法 TemplateMethod(),该方法中包括了办理出邦留学手续流程中的各个基本方法,其中有些方法的处理由于各邦都相同,以是正在笼统类中就能够实现,但有些方法的处理各邦是不同的,必需正在其详尽子类(如美邦留学类 StudyInAmerica)中实现。若是再增加一个邦家,只消增加一个子类就能够了,图 2 所示是其结构图。

关于我们 | 国际机票 | 国内机票 | 留学天地 | 全球酒店 | 在线咨询 | 旅行宝典 | 付款方式 | 联系方式 | 行业资讯 |
Copyright @ 2014 版权所有:北京捷安顺达航空服务有限公司 WWW.PEKBS.COM , All rights reserved
电话: 邮箱:guojipiaowu@sina.com
公司地址:北京市朝阳区吉庆里6号佳汇中心B座807房间/北京市朝阳区吉庆里6号佳汇中心B座209-C11房间/
邮政编码: 100020 京ICP备京ICP备11044899号-3