menbbo

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

介绍

定义一个操作中的算法骨架,将算法一些步骤延迟到子类中,使得子类可以在不改变算法结构的情况下重新定义

该算法的某些特定步骤,属于行为模式。

应用场景

javaweb中的servlet,HttpService类提供了一个service()方法;

有多个子类共有逻辑相同的方法,可以考虑作为模板方法;

设计一个系统时直到了算法所需的关键步骤,且知道了这些步骤的执行顺序,但某些步骤的具体实现还未知,可以

延迟到子类中实现。

角色

抽象模板:定义一个模板方法,是一个具体方法,给出一个顶级算法骨架,而逻辑骨架的组成在相应的抽象操作中推迟到子类实现;

具体模板:实现父类所定义的一个或多个抽象方法,他是顶级算法骨架的组成步骤。

优点

扩展性好,对不变的代码进行封装,对可变的进行扩展,符合开闭原则;

提高代码复用性,将相同部分的代码放在抽象的父类中,将不同的代码放在子类中;

通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制;

缺点

每一个不同的实现都需要具体的一个子类来实现,导致类的个数增加。

模板方法模式和建造者模式的区别

两者很大的交集,建造者模式比模板方法模式多了一个指挥类,该类体现的是模板方法模式中

抽象类的固定算法的功能,是一个创建对象的固定算法。

posted on   menbbo  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
 
点击右上角即可分享
微信分享提示