标签:设计 col end div int 编写 抽象类 nbsp 抽象
1、课程抽象类
/** * 课程抽象类 */ public abstract class ACourse { /** * 制作课程 模板方法 */ protected final void makeCourse() { this.makePPT();// 必选步骤 this.makeVideo();// 必选步骤 if (needWriteArticle()) { this.writeArticle();// 可选步骤 } this.packageCourse();// 子类实现的步骤 } /** * 制作PPT */ final void makePPT() { System.out.println("制作PPT"); } /** * 录制视频 */ final void makeVideo() { System.out.println("录制视频"); } /** * 编写手记 */ final void writeArticle() { System.out.println("编写手记"); } /** * 是否编写手记 * (钩子方法) * * @return */ protected boolean needWriteArticle() { return false; } /** * 打包课程(抽象方法,由子类去实现) */ abstract void packageCourse(); }
2、前端课程类
public class FECourse extends ACourse { private boolean needWriteArticleFlag; public FECourse(boolean needWriteArticleFlag) { this.needWriteArticleFlag = needWriteArticleFlag; } @Override void packageCourse() { System.out.println("提供前端源代码"); System.out.println("提供前端多媒体素材"); } @Override protected boolean needWriteArticle() { return this.needWriteArticleFlag; } }
3、前端Vue课程类
/** * Vue 课程 */ public class VueFECourse extends FECourse { /** * 是否编写手记 * * @param needWriteArticleFlag */ public VueFECourse(boolean needWriteArticleFlag) { super(needWriteArticleFlag); } }
4、前端Reactor课程类
/** * Reactor 课程 */ public class ReactorFECourse extends FECourse { /** * 是否编写手记 * * @param needWriteArticleFlag */ public ReactorFECourse(boolean needWriteArticleFlag) { super(needWriteArticleFlag); } }
5、设计模式课程类
public class DesignPatternCourse extends ACourse { @Override void packageCourse() { System.out.println("设计模式课程"); } /** * 是否编写手记 * * @return */ @Override protected boolean needWriteArticle() { return true; } }
6、测试类
public class MainTest { public static void main(String[] args) { DesignPatternCourse designPatternCourse = new DesignPatternCourse(); designPatternCourse.makeCourse(); System.out.println("---------------------------"); VueFECourse vueFECourse = new VueFECourse(false); vueFECourse.makeCourse(); System.out.println("---------------------------"); ReactorFECourse reactorFECourse = new ReactorFECourse(true); reactorFECourse.makeCourse(); } }
运行测试类执行结果:
制作PPT 录制视频 编写手记 设计模式课程 --------------------------- 制作PPT 录制视频 提供前端源代码 提供前端多媒体素材 --------------------------- 制作PPT 录制视频 编写手记 提供前端源代码 提供前端多媒体素材
标签:设计 col end div int 编写 抽象类 nbsp 抽象
原文地址:https://www.cnblogs.com/jun1019/p/11876825.html