企业单位网站建设内容需要什么,企业建站平台哪个好,城乡住房建设厅网站首页,门户网站建设 报价目录
模板模式的定义
模板模式的实现
模板模式角色
模板模式类图
模板模式举例
模板模式代码实现
模板模式的特点
优点
缺点
使用场景
注意事项
实际应用 模板模式的定义 模板模式#xff08;Template Pattern#xff09;属于行为型设计模式#xff0c;又叫模版…目录
模板模式的定义
模板模式的实现
模板模式角色
模板模式类图
模板模式举例
模板模式代码实现
模板模式的特点
优点
缺点
使用场景
注意事项
实际应用 模板模式的定义 模板模式Template Pattern属于行为型设计模式又叫模版方法模式(Template Method Pattern)是指定义一个算法的骨架并允许子类为一个或多个步骤提供实现。模板模式使得子类可以在不改变算法结构的情况下重新定义算法的某些步骤。 模板模式其主要的的思想就是做一个模板提供给客户端进行调用。除去生活中我们经常用到的简历模板、合同模板等等Java中也有很经典的模板使用那就是ServletHttpService类提供了一个service()方法这个方法调用七个do方法中的一个或几个完成对客户端调用的响应。这些do方法需要由HttpServlet的具体则由子类提供。
模板模式的实现
模板模式角色
抽象模板角色(Abstract Template)定义了一个或多个抽象操作即定义了算法的骨架以便让子类实现。这些抽象操作叫做基本操作它们是一个顶级逻辑的组成步骤定义并实现了一个模板方法。这个模板方法一般是一个具体方法它给出了一个顶级逻辑的骨架而逻辑的组成步骤在相应的抽象操作中推迟到子类实现。顶级逻辑也有可能调用一些具体方法。具体模板角色(Concrete Template)实现父类所定义的一个或多个抽象方法即不同的对象的具体实现细节它们是一个顶级逻辑的组成步骤每一个抽象模板角色都可以有任意多个具体模板角色与之对应而每一个具体模板角色都可以给出这些抽象方法也就是顶级逻辑的组成步骤的不同实现从而使得顶级逻辑的实现各不相同。
模板模式类图 模板模式举例 相信大家都吃过水果蛋糕不过无论造型如何变化不变的有两种东西“奶油”和“面包”。其余的水果材料随意搭配就凑成了各式各样的水果蛋糕。基于这个场景写一个案例进一步了解下模板模式创建三个类Cake蛋糕、StrawberryCake草莓蛋糕、MangoCake芒果蛋糕。最后创建一个Client类实现这个制作蛋糕的调用过程。
模板模式代码实现
抽象模版角色
package com.common.demo.pattern.template;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 抽象模版角色 蛋糕* date 2023/08/09 13:44:38*/
public abstract class Cake {/*** 制作*/public void make() {System.out.println(开始准备材料。);bread();cream();fruit();System.out.println(经过一系列的操作。);System.out.println(制作完成。);}/*** 准备面包*/public void bread() {System.out.println(准备材料面包);}/*** 准备奶油*/public void cream() {System.out.println(准备材料奶油);}/*** 准备水果*/protected abstract void fruit();}具体模版角色
package com.common.demo.pattern.template;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 具体模版角色芒果蛋糕* date 2023/08/09 13:46:07*/
public class MangoCake extends Cake{Overrideprotected void fruit() {System.out.println(准备材料芒果);}
}
package com.common.demo.pattern.template;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 具体模版角色草莓蛋糕* date 2023/08/09 13:46:07*/
public class StrawberryCake extends Cake{Overrideprotected void fruit() {System.out.println(准备材料草莓);}
}测试代码
package com.common.demo.pattern.template;/*** author Evan Walker 昂焱数据: https://www.ayshuju.com* version 1.0* desc 测试类* date 2023/08/09 13:48:06*/
public class Test {public static void main(String[] args) {Cake c1 new MangoCake();c1.make();Cake c2 new StrawberryCake();c2.make();}}测试截图 模板模式的特点
优点
提高代码复用性模板模式将公共的算法提取到父类中子类只需关注实现自己特定的步骤提高了代码的复用性。保持一致的算法结构模板模式定义了算法的框架保持了一致的算法结构使得代码更加整洁和可读。灵活性子类可以根据需要重写或扩展父类中的某些算法步骤从而实现定制化的算法。
缺点
某些步骤的实现可能受限由于模板模式是通过继承来实现的因此可能会限制某些步骤的具体实现方式。增加了类的数量使用模板模式会增加父类和子类的数量可能导致类的层次结构较为复杂。
使用场景
当有一组相似的算法其具体实现步骤相同或类似只有某些步骤的实现有差异时可以考虑使用模板模式。当需要保持一致的算法结构提高代码复用性和可维护性时可以使用模板模式。
注意事项
抽象出公共的算法框架在使用模板模式时需要抽象出算法的公共框架并将可变的部分延迟到子类中实现。父类对于子类的要求父类中定义的模板方法可以使用钩子方法来约束子类的行为。为防止恶意操作一般模板方法都加上 final 关键词
实际应用
数据库访问操作数据库访问操作中的连接、查询和关闭等操作可以使用模板模式将通用的操作提取到父类中而具体的查询可以由子类来实现。游戏开发中的关卡设计在游戏开发中不同的关卡可能有相同的初始化、更新和结束等步骤可以使用模板模式来实现这些关卡。 更多消息资讯请访问昂焱数据https://www.ayshuju.com