Java设计模式之模板方法
//抽象类 模板类
public abstract class ACourse {
//final方法不能被子类重写
// 核心方法
protected final void makeCourse(){
//制作课程的流程,模板化:制作PPT,制作Video,写手记(可选),打包资源。
makePPT();
makeVideo();
if (needWriteArticle()){
writeArticle();
}
packageCourse();
}
final void makePPT(){
System.out.println("制作PPT");
}
final void makeVideo(){
System.out.println("制作视频");
}
final void writeArticle(){
System.out.println("写手记");
}
//是否需要写手记
protected boolean needWriteArticle(){
return false;
}
abstract void packageCourse();
}
//新建类,设计模式课程
public class DesignPatternCourse extends ACourse {
@Override
void packageCourse() {
System.out.println("提供设计模式课程源码");
}
//如果需要写手记,则重写此方法
@Override
protected boolean needWriteArticle() {
return true;
}
}
//新建类 Android课程
public class AndroidCourse extends ACourse {
@Override
void packageCourse() {
System.out.println("提供安卓课程源码");
System.out.println("提供安卓课程图片等素材");
}
}
//调用
public static void main(String [] a){
ACourse course1=new DesignPatternCourse();
course1.makeCourse();
System.out.println("-----------分隔线------------");
ACourse course2=new AndroidCourse();
course2.makeCourse();
}
//结果
制作PPT
制作视频
写手记
提供设计模式课程源码
-----------分隔线------------
制作PPT
制作视频
提供安卓课程源码
提供安卓课程图片等素材
此时UML的类图: