设计模式-模块方法模式(TemplateMethod)
2024-08-25 11:45:06
模块方法模式是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。
UML图:
具体代码:
/**
* 抽象-模块方法模式核心
*/
public abstract class AbstractPage {
public abstract void makeHeader();//组装页面头部
public abstract void makeBody();//组装页面body
public abstract void makeFooter();//组装页脚 public void make(){
makeHeader();//组装头
makeBody();//组装身
makeFooter();//组装脚
}
}
/**
* 页面1
*/
public class Page1 extends AbstractPage{
@Override
public void makeHeader() {
System.out.println("页面1,写头");
} @Override
public void makeBody() {
System.out.println("页面1,写身");
} @Override
public void makeFooter() {
System.out.println("页面1,写脚");
}
}
/**
* 页面2
*/
public class Page2 extends AbstractPage{
@Override
public void makeHeader() {
System.out.println("页面2,写头");
} @Override
public void makeBody() {
System.out.println("页面2,写身");
} @Override
public void makeFooter() {
System.out.println("页面2,写脚");
}
}
public class Main {
public static void main(String[] args) {
AbstractPage page1 = new Page1();
page1.make();//页面1拼装 System.out.println("---------------------------"); AbstractPage page2 = new Page2();
page2.make();//页面2拼装
}
}
结果:
页面1,写头
页面1,写身
页面1,写脚
---------------------------
页面2,写头
页面2,写身
页面2,写脚
应用场景:
1.具有统一的操作步骤或操作过程
2.具有不同的操作细节
3.存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同
源码地址:https://github.com/qjm201000/design_pattern_templateMethod.git
最新文章
- 用sql 语句给字段添加描述
- JCreator的配置
- WCF初探-11:WCF客户端异步调用服务
- [Toolchain]arm-none-linux-gnueabin编译
- codeforces 442C C. Artem and Array(贪心)
- FileUpload之FileItem
- python3生成标签云
- 定时器Timer
- LintCode 子树
- POJ 2252 Dungeon Master 三维水bfs
- PowerDesigner跟表的字段加注释
- JAVA学习(二):JDK介绍及其结构、用途
- LinbDesk --- 新的extjs4.2 desktop demo : 技术交流Q群:336584192
- 生产者/消费者问题的多种Java实现方式
- log4j日志框架的使用
- hightopo学习之旅一 -- 节点动画
- 用css巧妙实现移动端横向滑动展示功能
- 解决ArrayList线程不安全
- datatabale 服务器分页
- Maven让资源文件处理插件能够解析资源文件中的Maven属性
热门文章
- HDOJ 2189 悼念512四川汶川大地震遇难者——来生一起走 【生成函数】
- mac 安装使用Liteide
- 在Docker中创建Mongo容器的后续设置
- Vmware 占用宿主机硬盘空间只增不减
- ASP.NET Core 2 学习笔记(一)开始
- 在 __CC_ARM 编译器环境下,使用$Sub$$ 与 $Super$$ 的“补丁”功能
- win10 uwp 如何打包Nuget给其他人
- Visual Studio 2017报表RDLC设计器与工具箱中Report Viewer问题
- Cannot read property 'substring' of undefined
- C++/CLI 中使用 ref 和 out