宁波网站建设,医院网站开发兼职,重庆中技互联,电子商务专业就业方向及前景分析1. 模板模式介绍 1、模板模式即模板方法模式自定义了一个操作中的算法骨架#xff0c;而将步骤延迟到子类中#xff0c;使得子类可以不改变一个算法的结构#xff0c;可以自定义该算法的某些特定步骤#xff1b; 2、父类中提取了公共的部分代码#xff0c;便于代码复用而将步骤延迟到子类中使得子类可以不改变一个算法的结构可以自定义该算法的某些特定步骤 2、父类中提取了公共的部分代码便于代码复用 3、部分抽象方法是由子类实现的子类可以通过方法实现增加相应的功能 4、为了防止公共骨架方法重写操作一般公共流程方法上都加有 final 关键字 5、自定义钩子方法控制公共流程方法某些步骤是否需要执行。 2.模板模式结构类 ① 抽象方法模板抽象类中自定义由实现类具体实现。 ② 具体方法模板抽象类中非抽象方法公共流程方法实现类中可以继承或重写它。 ③ 钩子方法模板抽象类已经实现用于判断的逻辑方法。实现类决定是否重写此方法该方法为钩子方法 3.模板模式代码案例
一、模板抽象类
public abstract class IRobotTemplateT {// 骨架算法(流程)public final void processExecute(T param) {this.executeGo(param);// 钩子方法决定是否执行默认不执行if (this.isOpen()) {this.executeRun(param);}}// 步骤1-待实现public abstract void executeRun(T param);// 步骤2-待实现public abstract void executeGo(T param);// 钩子方法public boolean isOpen() {return false;}
}二、模板实现类
Component
public class RobotTemplate extends IRobotTemplateUserInfo {Overridepublic void executeRun(UserInfo userInfo) {System.out.println(userInfo.getUsername() 会跑步);}Overridepublic void executeGo(UserInfo userInfo) {System.out.println(userInfo.getUsername() 会走路);}Overridepublic boolean isOpen() {return true; // 重写钩子方法使执行executeRun方法}
}
三、运行模板模式
Resource
private IRobotTemplate robotTemplate;Override
public void process(UserInfo userInfo) {userInfo new UserInfo();userInfo.setUsername(机器人小智);// 执行模板抽象类中的公共流程方法robotTemplate.processExecute(userInfo);
}四、执行结果