设计模式——模板方法模式(TemplateMethod Pattern)
2024-08-31 05:40:42
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
UML图:
抽象模板:
package com.cnblogs.clarck; /**
* 抽象模板,并实现了一个模板方法。
*
* @author clarck
*
*/
public abstract class AbstractClass {
public abstract void primitiveOperation1(); public abstract void primitiveOperation2(); /**
* 模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,将具体的操作推迟到了子类实现。
*/
public void TemplateMethod() {
primitiveOperation1();
primitiveOperation2(); System.out.println("");
}
}
实现父类的一个或多个抽象方法:
package com.cnblogs.clarck; /**
* 实现父类的一个或多个抽象方法
*
* @author clarck
*
*/
public class ConcrateClassA extends AbstractClass { @Override
public void primitiveOperation1() {
System.out.println("具体类A的方法1实现");
} @Override
public void primitiveOperation2() {
System.out.println("具体类A的方法2实现");
} }
package com.cnblogs.clarck; public class ConcrateClassB extends AbstractClass { @Override
public void primitiveOperation1() {
System.out.println("具体类B的方法1实现");
} @Override
public void primitiveOperation2() {
System.out.println("具体类B的方法2实现");
} }
测试类:
package com.cnblogs.clarck; /**
* 测试类
*
* @author clarck
*
*/
public class Client {
public static void main(String[] args) {
AbstractClass abstractClass;
abstractClass = new ConcrateClassA();
abstractClass.TemplateMethod(); abstractClass = new ConcrateClassB();
abstractClass.TemplateMethod();
}
}
最新文章
- T-Sql(四)表关联和视图(view)
- 关于 QImage::Format_Mono
- Unity中的单实例
- XML 之 与Json或String的相互转换
- 【AR】增强现实安卓编程 - Vuforia SDK 的安装和使用 (Android Studio)
- MSBuild编译扩展
- stax解析XML-----Demo
- Oracle推断领域包括中国
- kvm 动态挂载硬盘
- 如何在container中编译dotnet的eShopOnContainers
- 详解 mpls vpn 的实现
- hexo 博客支持PWA和压缩博文
- qt中创建进程
- 如何在IIS上发布网站
- trackerClient.getConnection()为null
- idea工具和激活码获取
- Access,MSSQL:随机读取N条记录
- HDU 2680 Choose the best route(SPFA)
- c# DirectoryInfo 类和 FileInfo 类
- 加快QT工程编译速度
热门文章
- win10 安装MySQL8.0.11记录。
- 基于scrapy的一些实例
- PHP foreach ($arr as &;amp;$value)
- C# 操作字符串
- 使用bind配置DNS服务(CentOS 6.5)
- pycharm Python解释器的配置--可以指定批处理文件为解释器
- pat1013. Battle Over Cities (25)
- js获取当前日期,格式为YYYY-MM-DD
- MAC 下安装RabbitMQ
- 如何用 windows+github搭建一个优美的hexo博客