設計模式之模板模式
阿新 • • 發佈:2018-04-07
min device int def system ins nis 它的 重寫方法
在模板模式(Template Pattern)中,一個抽象類或接口公開定義了執行它的方法的方式/模板。它的子類或實現類可以按需要重寫方法實現,但調用將以抽象類中定義的方式進行。這種類型的設計模式屬於行為型模式,通常規定了某種既定的流程。
package 模板模式; /** * 抽象類的方式實現模板模式 */ public abstract class USBDevice1 { public abstract void insert(); public abstract void work(); public abstract void pullOut(); public void start(){ insert(); work(); pullOut(); } } class A extends USBDevice1{ public A() { } @Override public void insert() { System.out.println("第一步:設備插入"); } @Override public void work() { System.out.println("第二步:設備工作"); } @Override public void pullOut() { System.out.println("第三步:設備拔出"); } } -------------------------------------- package 模板模式; /** * 測試類 * @author Administrator * */ public class Test1 { public static void main(String[] args) { A a=new A(); a.start(); } }
上面是通過抽象類的方式完成的模板模式。執行測試類,控制臺打印如下:
第一步:設備插入 第二步:設備工作 第三步:設備拔出
我們還可以使用接口來完成模板模式,可以達到與上述代碼同樣的效果。
package 模板模式; /** * 接口方式實現模板模式 */ public interface USBDevice2 { public abstract void insert(); public abstract void work(); public abstract void pullOut(); public default void start(USBDevice2 usb){ usb.insert(); usb.work(); usb.pullOut(); } } class B implements USBDevice2{ @Override public void insert() { System.out.println("第一步:設備插入"); } @Override public void work() { System.out.println("第二步:設備工作"); } @Override public void pullOut() { System.out.println("第三步:設備工作"); } } ----------------------------------------------------------------- package 模板模式; /** * 測試類 */ public class Test2 { public static void main(String[] args) { USBDevice2 usb=new B(); usb.start(usb); } }
設計模式之模板模式