1 package com.shejimoshi.behavioral.TemplateMethod; 2 3 4 /** 5 * 功能:抽象模板類 6 * 時間:2016年3月10日下午9:02:32 7 * 作者:cutter_point 8 */ 9 public abstract class
1 package com.shejimoshi.behavioral.TemplateMethod; 2 3 4 /** 5 * 功能:抽象模板類 6 * 時間:2016年3月10日下午9:02:32 7 * 作者:cutter_point 8 */ 9 public abstract class AbstractTemplate 10 { 11 public abstract void operator1(); 12 13 public abstract void operator2(); 14 15 public void templateMethod() 16 { 17 operator1(); 18 operator2(); 19 System.out.println("流程操作結束"); 20 } 21 }
1 package com.shejimoshi.behavioral.TemplateMethod; 2 3 4 /** 5 * 功能:具體實現調用末班 6 * 時間:2016年3月10日下午9:04:44 7 * 作者:cutter_point 8 */ 9 public class GetUp extends AbstractTemplate 10 { 11 12 @Override 13 public void operator1() 14 { 15 System.out.println("鬧鐘響了"); 16 } 17 18 @Override 19 public void operator2() 20 { 21 System.out.println("穿衣服,準備起床"); 22 } 23 24 }
1 package com.shejimoshi.behavioral.TemplateMethod; 2 3 4 /** 5 * 功能:具體實現相應的操作2 6 * 時間:2016年3月10日下午9:06:27 7 * 作者:cutter_point 8 */ 9 public class GoToBed extends AbstractTemplate 10 { 11 12 @Override 13 public void operator1() 14 { 15 System.out.println("脫衣服,準備上床"); 16 } 17 18 @Override 19 public void operator2() 20 { 21 System.out.println("上床蓋好被子,準備睡覺"); 22 } 23 24 }
1 package com.shejimoshi.behavioral.TemplateMethod; 2 3 4 /** 5 * 功能:定義一個操作中的演算法的骨架,而將一些步驟延遲到子類。TemplateMethod使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟 6 * 適用:一次性實現一個演算法的不變部分,並將可變的行為留給子類來實現 7 * 各子類中的公共的行為應被提取出來並集中到一個公共父類中以避免代碼重覆 8 * 控制子類的擴展。模板方法只在特定點調用“hook”操作,這樣就只允許在這些點進行擴展 9 * 時間:2016年3月10日下午8:46:51 10 * 作者:cutter_point 11 */ 12 public class Test 13 { 14 public static void main(String[] args) 15 { 16 AbstractTemplate at; 17 18 at = new GetUp(); 19 at.templateMethod(); 20 21 System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); 22 23 at = new GoToBed(); 24 at.templateMethod(); 25 } 26 }
測試結果:
鬧鐘響了 穿衣服,準備起床 流程操作結束 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 脫衣服,準備上床 上床蓋好被子,準備睡覺 流程操作結束