Java設計模式之模板方法

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章