邵阳网站优化,可以做问答的网站,c 大型网站开发案例,工程信息网站谁做目录
一、定义
二、场景
业务场景
Java源码中的应用
三、例子
四、优缺点 优点 缺点 一、定义
模板模式又叫模板方法模式#xff0c;是指定义一个算法的骨架#xff0c;也就是执行的步骤模板#xff0c;然后由子类去实现其中一个或几个步骤。属于行为型设计模式。
二…目录
一、定义
二、场景
业务场景
Java源码中的应用
三、例子
四、优缺点 优点 缺点 一、定义
模板模式又叫模板方法模式是指定义一个算法的骨架也就是执行的步骤模板然后由子类去实现其中一个或几个步骤。属于行为型设计模式。
二、场景
完成一件事情需要若干步骤这些步骤基本相同可能存在某几个步骤的实现有些许不同的情况。
比如
业务场景 买杯奶茶选餐---下单---支付---制作---出餐---评价 入职流程填写入职登记表---打印简历---复印身份证、学位证书等---签合同---建立花名册---办理工牌---分配工位 上网课老师发布预习资料---制作课件---直播上课---上传课堂笔记---布置作业---检查作业
Java源码中的应用 AbstractList中的get方法 BaseExecutor的doUpdate、doQuery等 HttpServlet中的service方法
三、例子
下面以上网课为例。
public abstract class Course {protected final void createCourse() {//1.发布预习资料uploadPreview();//2.制作课件makePPT();//3.直播或录播上课attendClass();//4.上传课堂笔记uploadNote();//5.布置作业if(needHomework()) {//6.检查作业checkHomework();}}final void uploadPreview() {System.out.println(上传预习资料);}final void makePPT() {System.out.println(制作课件);}abstract void attendClass();final void uploadNote() {System.out.println(上传课堂笔记);}abstract boolean needHomework();abstract void checkHomework();
}
public class JavaCourse extends Course {private boolean needHomework false;public JavaCourse(boolean needHomework) {this.needHomework needHomework;}Overridevoid attendClass() {System.out.println(Java直播上课);}Overrideboolean needHomework() {return needHomework;}Overridevoid checkHomework() {System.out.println(检查Java作业);}
}
public class PythonCourse extends Course {private boolean needHomework false;public PythonCourse(boolean needHomework) {this.needHomework needHomework;}Overridevoid attendClass() {System.out.println(Python录播上课);}Overrideboolean needHomework() {return false;}Overridevoid checkHomework() {System.out.println(检查Python作业);}
}
public class Test {public static void main(String[] args) {System.out.println(----- Java课程 -----);Course java new JavaCourse(true);java.createCourse();System.out.println(----- Python课程 -----);Course python new PythonCourse(false);python.createCourse();}
}
----- Java课程 -----
上传预习资料
制作课件
Java直播上课
上传课堂笔记
检查Java作业
----- Python课程 -----
上传预习资料
制作课件
Python录播上课
上传课堂笔记
四、优缺点 优点 1.提高代码复用性将重复的代码放在抽象类中由子类去个性化实现不同功能。 2.提高代码扩展性只需要增加一个子类来实现一个不同功能。 3.符合开闭原则 缺点 1.类的数目增加间接增加系统复杂度。 2.如果父类增加新的抽象方法那么所有子类都要改。