亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • 模式的秘密---模板方法模式——總結 一、模板方法模式的實現要素: 準備一個抽象類,將部分邏輯以具體方法的形式實現,然后聲明一些抽象方法交由子類實現剩余邏輯,用鉤子方法給予子類更大的靈活性。最后將方法匯總構成一個不可改變的模板方法。 二、從類的角度看: (1)抽象基類 1、基本方法。 2、抽象方法【只知道具體原則,而不知道實現細節,需要將其延遲到子類中實現的一些步驟】。 3、可選鉤子(Hook,鉤子函數,提供一個默認或空的實現。具體的子類可以自行決定是否掛鉤以及如何掛鉤)。 4、Template方法(final 使其不能被子類所覆寫 模板方法模式要遵循的原則:子類可以替換掉父類中的可變邏輯,但不能改變整體邏輯結構))。 (2)具體子類 1、實現基類中的抽象方法。 2、覆蓋鉤子方法。 三、模板方法的優點: (1)封裝性好。 (2)復用性好。 (3)屏蔽細節。 (4)便于維護。 四、模板方法的缺點: (1)繼承限制(Java語言是單繼承語言),單繼承會使得更多情況不可用,新類引入困難。 五、模板方法模式的適用場景: (1)算法或操作遵循相似的邏輯。 (2)重構時(把相同的代碼抽取到父類中)。 (3)重要、復雜的算法,核心算法設計為模板方法。 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • package com.imooc.pattern.template; /* * 具體子類,提供了制備茶的具體實現 */ public class Tea extends RefreshBeverage { @Override protected void brew() { System.out.println("用80度的熱水浸泡茶葉5分鐘"); } @Override protected void addCondiments() { System.out.println("加入檸檬"); } @Override /* * 子類通過覆蓋的形式選擇掛載鉤子函數 * @see com.imooc.pattern.template.RefreshBeverage#isCustomerWantsCondiments() */ protected boolean isCustomerWantsCondiments() { return false; } } 運行結果: 制備咖啡…… 將水煮沸 用沸水沖泡咖啡 飲料倒入杯中 加入糖和牛奶 咖啡好了! ********************* 制備茶…… 將水煮沸 用80度的熱水浸泡茶葉5分鐘 飲料倒入杯中 茶好了!
    查看全部
  • 模式的秘密---模板方法模式——代碼實現 I 1、RefreshBeverage.java /* * 抽象基類,為所有子類提供一個算法框架 * 提神飲料 */ public abstract class RefreshBeverage { /* * 制備飲料的模板方法 * 封裝了所有子類共同遵循的算法框架 */ public final void prepareBeverageTemplate(){ //步驟1 將水煮沸 boilWater(); //步驟2 泡制飲料 brew(); //步驟3 將飲料倒入杯中 pourInCup(); if(isCustomerWantsCondiments()){ //步驟4 加入調味料 addCondiments(); } } /* * Hook, 鉤子函數,提供一個默認或空的實現 * 具體的子類可以自行決定是否掛鉤以及如何掛鉤 * 詢問用戶是否加入調料 */ protected boolean isCustomerWantsCondiments() { return true; } /* * 基本方法,將水煮沸 */ private void boilWater() { System.out.println("將水煮沸"); } /* * 基本方法,將飲料倒入杯中 */ private void pourInCup() { System.out.println("將飲料倒入杯中"); } /* * 抽象的基本方法,泡制飲料 */ protected abstract void brew(); /* * 抽象的基本方法, 加入調味料 */ protected abstract void addCondiments(); } ... 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • package com.imooc.pattern.template; public class RefreshBeverageTest { public static void main(String[] args) { System.out.println("制備咖啡……"); RefreshBeverage b1 = new Coffee(); b1.prepareBeverageTemplate(); System.out.println("咖啡好了!"); System.out.println("\n*********************"); System.out.println("制備茶……"); RefreshBeverage b2 = new Tea(); b2.prepareBeverageTemplate(); System.out.println("茶好了!"); } } 運行結果: 制備咖啡…… 將水煮沸 用沸水沖泡咖啡 飲料倒入杯中 加入糖和牛奶 咖啡好了! ********************* 制備茶…… 將水煮沸 飲料倒入杯中 茶好了!
    查看全部
  • package com.imooc.pattern.template; public class RefreshBeverageTest { public static void main(String[] args) { System.out.println("制備咖啡……"); RefreshBeverage b1 = new Coffee(); b1.prepareBeverageTemplate(); System.out.println("咖啡好了!"); } } 輸出結果: 制備咖啡…… 將水煮沸 用沸水沖泡咖啡 飲料倒入杯中 加入糖和牛奶 咖啡好了!
    查看全部
  • package com.imooc.pattern.template; /* * 抽象基類,為所有子類提供一個算法框架 * * 提神飲料 */ public abstract class RefreshBeverage { /* * 制備飲料的模板方法 * 封裝了所有子類共同遵循的算法框架 */ public final void prepareBeverageTemplate(){ // 步驟1.將水煮沸 boilWater(); // 步驟2.泡制飲料 brew(); // 步驟3.將飲料倒入杯中 pourInCup(); // 步驟4. 加入調味料 addCondiments(); } /* * 基本方法,將水煮沸 */ private void boilWater() { System.out.println("將水煮沸"); } /* * 抽象的基本方法,泡制飲料 */ protected abstract void brew(); /* * 基本方法,將飲料倒入杯中 */ private void pourInCup() { System.out.println("飲料倒入杯中"); } /* * 抽象的基本方法,加入調味料 */ protected abstract void addCondiments(); }
    查看全部
  • 每一次學習都是一次進步 模板模式 定義了一個操作中的算法骨架,而將一些步驟延遲到子類中實現, 使得子類在不改變一個算法結構的同時,就重新定義該算法的特定步驟.
    查看全部
  • 模板方法的實現要素
    查看全部
  • 模版方法實現要素
    查看全部
  • 對模板方法中非共性的方法采用抽象類中的抽象方法,是因為有些方法在模板中確實不知道具體的實現,提供一個空的默認實現,再在子類中去override是多余的。再者,共性的部分采用private標識,對子類屏蔽了實現細節,讓具體的子類只用關注它特有的個性方法實現。 這樣整體結構更加清晰明了,各個類的職責也更加具體清楚。...
    查看全部
  • 模式的秘密---模板方法模式——總結 一、模板方法模式的實現要素: 準備一個抽象類,將部分邏輯以具體方法的形式實現,然后聲明一些抽象方法交由子類實現剩余邏輯,用鉤子方法給予子類更大的靈活性。最后將方法匯總構成一個不可改變的模板方法。 二、從類的角度看: (1)抽象基類 1、基本方法。 2、抽象方法【只知道具體原則,而不知道實現細節,需要將其延遲到子類中實現的一些步驟】。 3、可選鉤子(Hook,鉤子函數,提供一個默認或空的實現。具體的子類可以自行決定是否掛鉤以及如何掛鉤)。 4、Template方法(final 使其不能被子類所覆寫 模板方法模式要遵循的原則:子類可以替換掉父類中的可變邏輯,但不能改變整體邏輯結構))。 (2)具體子類 1、實現基類中的抽象方法。 2、覆蓋鉤子方法。 三、模板方法的優點: (1)封裝性好。 (2)復用性好。 (3)屏蔽細節。 (4)便于維護。 四、模板方法的缺點: (1)繼承限制(Java語言是單繼承語言),單繼承會使得更多情況不可用,新類引入困難。 五、模板方法模式的適用場景: (1)算法或操作遵循相似的邏輯。 (2)重構時(把相同的代碼抽取到父類中)。 (3)重要、復雜的算法,核心算法設計為模板方法。
    查看全部
  • 模板模式 定義了一個操作中的算法骨架,而將一些步驟延遲到子類中實現, 使得子類在不改變一個算法結構的同時,就重新定義該算法的特定步驟.
    查看全部
  • 模板方法要求,聲明的共同的方法為final,也就不讓子類繼承和破壞,子類可以替換掉父類中可變的邏輯,但是不能改變整體的邏輯結構,這個原則稱之為好萊塢原則,也就是好萊塢的演員可以為娛樂公司提供一些業務,但是不能改變娛樂公司的運行規則。
    查看全部
  • 模式的秘密---模板方法模式——總結 一、模板方法模式的實現要素: 準備一個抽象類,將部分邏輯以具體方法的形式實現,然后聲明一些抽象方法交由子類實現剩余邏輯,用鉤子方法給予子類更大的靈活性。最后將方法匯總構成一個不可改變的模板方法。 二、從類的角度看: (1)抽象基類 1、基本方法。 2、抽象方法【只知道具體原則,而不知道實現細節,需要將其延遲到子類中實現的一些步驟】。 3、可選鉤子(Hook,鉤子函數,提供一個默認或空的實現。具體的子類可以自行決定是否掛鉤以及如何掛鉤)。 4、Template方法(final 使其不能被子類所覆寫 模板方法模式要遵循的原則:子類可以替換掉父類中的可變邏輯,但不能改變整體邏輯結構))。 (2)具體子類 1、實現基類中的抽象方法。 2、覆蓋鉤子方法。 三、模板方法的優點: (1)封裝性好。 (2)復用性好。 (3)屏蔽細節。 (4)便于維護。 四、模板方法的缺點: (1)繼承限制(Java語言是單繼承語言),單繼承會使得更多情況不可用,新類引入困難。 五、模板方法模式的適用場景: (1)算法或操作遵循相似的邏輯。 (2)重構時(把相同的代碼抽取到父類中)。 (3)重要、復雜的算法,核心算法設計為模板方法。
    查看全部
  • 模式的秘密---模板方法模式——總結 一、模板方法模式的實現要素: 準備一個抽象類,將部分邏輯以具體方法的形式實現,然后聲明一些抽象方法交由子類實現剩余邏輯,用鉤子方法給予子類更大的靈活性。最后將方法匯總構成一個不可改變的模板方法。 二、從類的角度看: (1)抽象基類 1、基本方法。 2、抽象方法【只知道具體原則,而不知道實現細節,需要將其延遲到子類中實現的一些步驟】。 3、可選鉤子(Hook,鉤子函數,提供一個默認或空的實現。具體的子類可以自行決定是否掛鉤以及如何掛鉤)。 4、Template方法(final 使其不能被子類所覆寫 模板方法模式要遵循的原則:子類可以替換掉父類中的可變邏輯,但不能改變整體邏輯結構))。 (2)具體子類 1、實現基類中的抽象方法。 2、覆蓋鉤子方法。 三、模板方法的優點: (1)封裝性好。 (2)復用性好。 (3)屏蔽細節。 (4)便于維護。 四、模板方法的缺點: (1)繼承限制(Java語言是單繼承語言),單繼承會使得更多情況不可用,新類引入困難。 五、模板方法模式的適用場景: (1)算法或操作遵循相似的邏輯。 (2)重構時(把相同的代碼抽取到父類中)。 (3)重要、復雜的算法,核心算法設計為模板方法。 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部

舉報

0/150
提交
取消
課程須知
本課程的學習,需要小伙伴們具有面向對象基礎知識及 Java 語言基礎。如果您是新手,建議先移步 《Java入門第一季》和《Java入門第二季》
老師告訴你能學到什么?
1、什么是模板方法模式 2、模板方法模式如何實現 3、如何在模板方法模式中增加靈活性 4、專門行業是如何使用模板方法模式

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!