论坛
Ai合集
开源相关
教程
论坛
Ai合集
开源相关
教程
游客
注册
登录
DesignPattern Java 23种设计模式全归纳
1. 观察者模式
2. 工厂模式
1、静态工厂模式
2、简单工厂模式(店里买肉夹馍)
3、工厂方法模式(开分店)
4、抽象工厂模式(使用官方提供的原料)
3. 单例设计模式
4. 策略模式
5. 适配器模式
6. 命令模式
7. 装饰者模式
8. 外观模式
9. 模板方法模式
10. 状态模式
11. 建造者模式
12. 原型模式
13. 享元模式
14. 代理模式
15. 桥接模式
16. 组合模式
17. 迭代器模式
18. 中介者模式
19. 备忘录模式
20. 解释器模式
21. 责任链模式
22. 访问者模式
wiki.1024.pm IT论坛
-
+
首页
9. 模板方法模式
### 9. 模板方法模式 > 定义:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤。 - 需求:简单描述一下:本公司有程序猿、测试、HR、项目经理等人,下面使用模版方法模式,记录下所有人员的上班情况 - 模板方法模式中的三类角色 - 1、具体方法(Concrete Method) - 2、抽象方法(Abstract Method) - 3、钩子方法(Hook Method) - 工人的超类:[Worker.java](https://github.com/youlookwhat/DesignPattern/blob/master/app/src/main/java/com/example/jingbin/designpattern/templatemethod/Worker.java) ```java // 具体方法 public final void workOneDay() { Log.e("workOneDay", "-----------------work start----------------"); enterCompany(); work(); exitCompany(); Log.e("workOneDay", "-----------------work end----------------"); } // 工作 抽象方法 public abstract void work(); // 钩子方法 public boolean isNeedPrintDate() { return false; } private void exitCompany() { if (isNeedPrintDate()) { Log.e("exitCompany", "---" + new Date().toLocaleString() + "--->"); } Log.e("exitCompany", name + "---离开公司"); } ``` - 程序员实现类(可得知时间):[ITWorker.java](https://github.com/youlookwhat/DesignPattern/blob/master/app/src/main/java/com/example/jingbin/designpattern/templatemethod/worker/ITWorker.java) ```java /** * 重写父类的此方法,使可以查看离开公司时间 */ @Override public boolean isNeedPrintDate() { return true; } ``` - 最后测试: - 查看所有人员的工作情况: ```java QAWorker qaWorker = new QAWorker("测试人员"); qaWorker(); HRWorker hrWorker = new HRWorker("莉莉姐"); hrWorker.workOneDay(); ... ``` - 查看程序猿离开公司的时间: ```java ITWorker itWorker = new ITWorker("jingbin"); itWorker.workOneDay(); ```
1024wiki
2026年8月11日 13:38
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
分享
链接
类型
密码
更新密码
有效期
Markdown文件
Word文件
PDF文档(打印)