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

结构图:

代码:

算法骨架:

 package cn.happy.design_pattern._07templatemethod;

 public abstract class AbstractClass {

     public abstract void primitiveOperation1();
public abstract void primitiveOperation2();
public void templateMethod(){
primitiveOperation1();
primitiveOperation2();
}
}

某类重写算法骨架的某步骤:

 package cn.happy.design_pattern._07templatemethod;

 public class ConcreteClassA extends AbstractClass {

     @Override
public void primitiveOperation1() {
System.out.println("具体类A方法1实现"); } @Override
public void primitiveOperation2() {
System.out.println("具体类A方法2实现"); } }
public class ConcreteClassB extends AbstractClass { @Override
public void primitiveOperation1() {
System.out.println("具体类B方法1实现"); } @Override
public void primitiveOperation2() {
System.out.println("具体类B方法2实现"); } }

测试类:

 package cn.happy.design_pattern._07templatemethod;

 public class Mmain {

     public static void main(String[] args) {
AbstractClass c = new ConcreteClassA();
c.templateMethod();
c = new ConcreteClassB();
c.templateMethod(); } }

最新文章

  1. UEditor编辑器使用示例
  2. dev winform导出功能
  3. 【LeetCode】Sort Colors
  4. 对非线程安全类List<T>的一些总结
  5. c# 中crystal report输出PDF文件
  6. yum源的更新问题
  7. iOS开发——常用Runtime函数
  8. HDOJ2553-N皇后问题(DFS)
  9. java日历程序版本
  10. EDA 事件驱动框架
  11. ionic系列
  12. CF1131E String Multiplication(???)
  13. 模块---hashlib、configparse、logging
  14. 集合(2)—Collection之List的使用方法
  15. WPF背景图
  16. Python3各种进制之间的转换方法
  17. 【mybatis源码学习】mybtias一级,二级缓存
  18. It’s Time To Think Linq
  19. html5 canvas多个图像旋转
  20. vuejs组件交互 - 01 - 父子组件之间的数据交互

热门文章

  1. 使用Adorner显示WPF控件的边界点
  2. Python 的神奇方法指南
  3. Java之"Mozilla Rhino"引擎(二)
  4. WPF 控件的内容属性
  5. Bootstrap 反色导航条
  6. MyBatis 问题 & 解决
  7. 如何在XAML中转义大括号
  8. Java 访问修饰符详解
  9. 蓝牙模块在HHARM2410上的移植
  10. C# 实现系统关机、注销、重启、休眠、挂起