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的類圖: