设计模式 -- Template Method(模板方法)
2023-03-31 10:52:09 时间
直接上代码、先按原来开发步骤、在重构到模式、即在现成代码间寻找变化点、在使用对应的设计模式!
原先
按流程执行代码
import org.junit.Test;
// 程序库开发人员
class Library {
public void step1() {}
public void step3() {}
public void step5() {}
}
// 应用程序开发人员
class Application {
public boolean step2() {
return true;
}
public void step4() {}
}
public class TemplateMethod {
@Test
public void T1() {
Library lib = new Library();
Application app = new Application();
lib.step1();
if (app.step2()) {
lib.step3();
}
for (int i = 0; i < 5; i ++) {
app.step4();
}
lib.step5();
}
}
重构
程序库开发人员帮你做好步骤了、封装了变化点
对于Template Method来说,有一个前提,就是Run()方法必须要是稳定的。如果Run()不稳定,那么没有一个稳定的软件的骨架,就不存在这样一种设计模式。假定,所有方式都是稳定,那么其实也没有必要使用设计模式。
import org.junit.Test;
// 程序库开发人员
interface Library {
default void step1() {}
default void step3() {}
default void step5() {}
boolean step2();
void step4();
// 封装变化点、Template Method
default void run() {
step1();
if (step2()) {
step3();
}
for (int i = 0; i < 5; i ++) {
step4();
}
step5();
}
}
// 应用程序开发人员
class Application implements Library {
public boolean step2() {
return true;
}
public void step4() {}
}
public class TemplateMethod {
@Test
public void T1() {
Application app = new Application();
app.run();
}
}
在软件构建过程中、对于某一项任务、它常常有稳定的整体操作结构、但各个子步骤却有很多改变的需求、或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现
如何在确定稳定操作结构的前提下、来灵活应对各个子步骤的变化或者晚期实现需求
Template Method是一种非常基础性的设计模式,在面向对象的系统中,有着大量的应用。他用最简洁的机制为很多应用程序的框架提供了灵活的扩展点,是代码复用方面的基本实现结构。
除了可以灵活对应子步骤的变化外,“不要调用我,让我来调用你”的反向控制结构是Template Method的典型应用。
相关文章
- Flutter的优点和缺点
- 搞微服务还用Spring Cloud?Istio好用到爆!
- Flutter设置App的应用名字和应用logo图标的方法(android ios web)
- Flutter应用发布windows版[Flutter专题8]
- 如何使用 Flutter 创建桌面应用程序[Flutter专题7]
- [Flutter专题10]
- Android开发:App点击跳转到网页的实现
- 2022年,工业互联网能带来多少经济增长?
- T资讯 | SFC表示将停止使用GitHub进行项目托管、VUE VLOG宣布停止运营、OpenSea客户电子邮件数据被泄露
- 6年技术迭代,阿里全球化出海&合规的挑战和探索
- 月活 12.8 亿的微信,海量请求下是如何防止崩溃的?
- T 资讯 | 大量用户反馈 QQ 账号被盗、Rust 基础架构有望在 Linux 5.20 被合并、拼多多电脑网页版上线
- 聊聊七个常见的智能汽车技术
- 牛逼!五分钟开发一款桌面版应用
- 汇聚创新力量,2022鸿蒙开发者大赛正式开启
- 传统.NET 4.x应用容器化体验(6)
- 跨系统数据一致性问题解决方案汇总
- SimpleMarkDown编辑器离线版以及桌面应用版上线
- 2021爱分析・数据智能平台实践报告-重构数据智能时代的数据基础设施
- T资讯 | 华为自研编程语言将在下半年发布、马斯克呼吁推特员工“学习微信好榜样”、美国100多位CEO敦促国会通过对中国半导体竞争法案