首页 > 其他 > 详细

模板方法模式TemplateMethod

时间:2019-08-25 12:36:28      阅读:97      评论:0      收藏:0      [点我收藏+]

原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11407071.html

 

1. 定义
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

 

2. 结构图

技术分享图片

AbstractClass:抽象类。用来定义算法骨架和原语操作,具体的子类通过重定义这些原语操作来实现一个算法的各个步骤。在这个类里面,还可以提供算法中通用的实现。
ConcreteClass:具体实现类。用来实现算法骨架中的某些步骤,完成与特定子类相关的功能。

 

3. 本质
模板方法模式的本质:固定算法骨架。

 

4. Code Demo

AbstractClass.java

 1 package org.fool.dp.templatemethod;
 2 
 3 public abstract class AbstractClass {
 4     public void template() {
 5         this.method1();
 6         this.method2();
 7         this.method3();
 8     }
 9 
10     public abstract void method1();
11 
12     public abstract void method2();
13 
14     public abstract void method3();
15 }

ConcreteClass.java

 1 package org.fool.dp.templatemethod;
 2 
 3 public class ConcreteClass extends AbstractClass {
 4     @Override
 5     public void method1() {
 6         System.out.println("step 1");
 7     }
 8 
 9     @Override
10     public void method2() {
11         System.out.println("step 2");
12     }
13 
14     @Override
15     public void method3() {
16         System.out.println("step 3");
17     }
18 }

Client.java

1 package org.fool.dp.templatemethod;
2 
3 public class Client {
4     public static void main(String[] args) {
5         AbstractClass ac = new ConcreteClass();
6 
7         ac.template();
8     }
9 }

 

模板方法模式TemplateMethod

原文:https://www.cnblogs.com/agilestyle/p/11407071.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!