第24章模板方法模式(TEMPLATEMETHOD)课件.ppt

第24章模板方法模式(TEMPLATEMETHOD)课件.ppt

ID:58450433

大小:315.50 KB

页数:33页

时间:2020-09-07

第24章模板方法模式(TEMPLATEMETHOD)课件.ppt_第1页
第24章模板方法模式(TEMPLATEMETHOD)课件.ppt_第2页
第24章模板方法模式(TEMPLATEMETHOD)课件.ppt_第3页
第24章模板方法模式(TEMPLATEMETHOD)课件.ppt_第4页
第24章模板方法模式(TEMPLATEMETHOD)课件.ppt_第5页
资源描述:

《第24章模板方法模式(TEMPLATEMETHOD)课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第24章模板方法模式(TEMPLATEMETHOD)模板方法模式模板方法模式模式动机模板方法模式是基于继承的代码复用基本技术,模板方法模式的结构和用法也是面向对象设计的核心之一。在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中。在模板方法模式中,需要准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来让子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现,这就是模板方法模式的用意。模板方法模式体现了面向对象的诸多重要思想,是

2、一种使用频率较高的模式。模板方法模式模式定义定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法是一种类行为型模式。模板方法模式UML类图AbstractClass(抽象类):定义了一到多的抽象方法,以供具体的子类来实现它们;而且还要实现一个模板方法,来定义一个算法的骨架。该模板方法不仅调用前面的抽象方法,也可以调用其他的操作,只要能完成自身的使命。ConcreteClass(具体类):实现父类中的抽象方法以完成算法中与特定子类相关的步骤。模板方法模

3、式模式分析模板方法模式是一种类的行为型模式,在它的结构图中只有类之间的继承关系,没有对象关联关系。在模板方法模式的使用过程中,要求开发抽象类和开发具体子类的设计师之间进行协作。一个设计师负责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。实现这些具体逻辑步骤的方法称为基本方法(PrimitiveMethod),而将这些基本法方法汇总起来的方法称为模板方法(TemplateMethod),模板方法模式的名字从此而来。模式分析模板方法:一个模板方法是定义在抽象类中的、把基本操作方法组合在一起形成一个总算法或一

4、个总行为的方法。基本方法:基本方法是实现算法各个步骤的方法,是模板方法的组成部分。抽象方法(AbstractMethod)具体方法(ConcreteMethod)钩子方法(HookMethod):“挂钩”方法和空方法模板方法模式模板方法模式模式分析在模板方法模式中,由于面向对象的多态性,子类对象在运行时将覆盖父类对象,子类中定义的方法也将覆盖父类中定义的方法,因此程序在运行时,具体子类的基本方法将覆盖父类中定义的基本方法,子类的钩子方法也将覆盖父类的钩子方法,从而可以通过在子类中实现的钩子方法对父类方法的执行进行约束,实现子类对

5、父类行为的反向控制。模板方法模式钩子方法:一个由抽象类声明并实现,而子类加以扩展。通常是抽象类给出的空实现,作为默认实现,子类加以扩展钩子方法的引入使得子类可以控制父类的行为。比较复杂一点的钩子方法可以对其他方法进行约束,这种钩子方法通常返回一个boolean类型,即返回true或false,用来判断是否执行某一个基本方法。钩子方法abstractpublicclassAbstractClass{publicvoidhookMethod(){}/**钩子方法*/publicabstractvoidabstractMethod()

6、;/**抽象方法*/publicvoidconcreteMethod(){/**具体方法*/System.out.println("Thisisaconcretemethod.");}}publicclassConcreteClassextendsAbstractClass{publicvoidhookMethod(){/**扩展钩子方法*/System.out.println("Thisisare-implementedhookmethod.");}publicvoidabstractMethod(){/**实现抽象方法*/S

7、ystem.out.println("Thisisanimplementationofanabstractmethod.");}}//定义一个抽象模板类publicabstractclassAbstractClass{//定义一系列步骤的方法publicvoidtemplateMethod(){commonOperation();operation1();operation2();}privatevoidcommonOperation(){System.out.println("共同的方法");}/**要求子类去实现的方法1**

8、/protectedabstractvoidoperation1();/**要求子类去实现的方法2**/protectedabstractvoidoperation2();}//定义第一个具体ConcreteClassA子类publicclassConcrete

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。