1. 程式人生 > 其它 >謳譜科技-招募 JAVA後端高階開發工程師

謳譜科技-招募 JAVA後端高階開發工程師

1、模板模式簡介

定義:一種類行為型模式,定義一個操作中的骨架,而將實現步驟的延遲到子類中,使得子類可以不改變該骨架結構的情況下重定義某些特定步驟

目標:不改變步驟實現不同的結果

解決問題:解決因為小部分差異而導致的程式碼冗餘

優點:封裝了不變部分,擴充套件可變部分。它把認為是不變部分的演算法封裝到父類中實現,而把可變部分演算法由子類繼承實現,便於子類繼續擴充套件,在父類中提取了公共的部分程式碼,便於程式碼複用

   部分方法是由子類實現的,因此子類可以通過擴充套件方式增加相應的功能,符合開閉原則。

缺點:對每個不同的實現都需要定義一個子類,這會導致類的個數增加,系統更加龐大,設計也更加抽象,間接地增加了系統實現的複雜度

   父類中的抽象方法由子類實現,子類執行的結果會影響父類的結果,這導致一種反向的控制結構,它提高了程式碼閱讀的難度

   由於繼承關係自身的缺點,如果父類新增新的抽象方法,則所有子類都要改一遍

實現:

 1 /**抽象類**/
 2 public abstract class fatherClass {
 3     /**抽象類**/
 4     public void TemplateMethod(){
 5         //抽象方法
 6         Template1();
 7         Template2();
 8         Template3();
 9     }
10 /**具體方法**/ 11 public void Template1(){ 12 System.out.println("模板方法壹號"); 13 } 14 /**抽象方法1**/ 15 public abstract void Template2(); 16 /**抽象方法2**/ 17 public abstract void Template3(); 18 } 19 20 /**具體子類1**/ 21 public class son1Class extends fatherClass { 22 @Override 23
public void Template2() { 24 System.out.println("son1 抽象方法壹號"); 25 } 26 27 @Override 28 public void Template3() { 29 System.out.println("son1 抽象方法貳號"); 30 } 31 } 32 33 /**具體子類2**/ 34 public class son2Class extends fatherClass { 35 @Override 36 public void Template2() { 37 System.out.println("son2 抽象方法壹號"); 38 } 39 40 @Override 41 public void Template3() { 42 System.out.println("son2 抽象方法貳號"); 43 } 44 } 45 46 /**測試方法**/ 47 public class test { 48 public static void main(String[] args) { 49 fatherClass fatherClass = new son1Class(); 50 fatherClass.TemplateMethod(); 51 System.out.println("========================================"); 52 fatherClass fatherClass1 = new son2Class(); 53 fatherClass1.TemplateMethod(); 54 } 55 } 56 57 測試結果: 58 模板方法壹號 59 son1 抽象方法壹號 60 son1 抽象方法貳號 61 ======================================== 62 模板方法壹號 63 son2 抽象方法壹號 64 son2 抽象方法貳號