天天看點

Java設計模式——模闆設計模式

模闆設計模式

模闆模式(Template ):模闆方法模式是類的行為模式。準備一個抽象類,将部分邏輯以具體方法以及具體構造函數的形式實作,然後聲明一些抽象方法來迫使子類實作剩餘的邏輯。不同的子類可以以不同的方式實作這些抽象方法,進而對剩餘的邏輯有不同的實作。這就是模闆方法模式的用意。

模式中的角色:

抽象類<code>(AbstractClass)</code>:實作了模闆方法,定義了算法的骨架。

具體類<code>(ConcreteClass)</code>:實作抽象類中的抽象方法,已完成完整的算法。

Java設計模式——模闆設計模式

抽象模闆類:

具體模闆類:

場景類:

需求

有多個類,完成不同的job

要求能夠得到各自的完成時間

1.)傳統方式實作

代碼

對于不同的任務它們有自己各自的執行方式,我們需要做的是統計它們各自執行完任務所花費的時間。我們通過觀察發現計算時間的方法被重複的使用,方法是一樣的方法隻是各個任務執行的細節不同罷了,如果有CC類 、DD類.......的不同任務job()——是以我們可以将其設定為抽象方法!,那麼計算時間的方法calcTime()要在每一個類中使用!這樣代碼就大量的重複了,不利于修改與維護!——是以我們可以将其設定為模闆方法!

2.)模闆設計模式實作

抽象模闆類(AbstractClass)

具體模闆類(ConcreteClass)

 測試類(ConcreteClass)

模闆方法模式通過把不變的行為搬移到超類,去除了子類中的重複代碼。子類實作算法的某些細節,有助于算法的擴充。通過一個父類調用子類實作的操作,通過子類擴充增加新的行為,符合“開放-封閉原則”。

每個不同的實作都需要定義一個子類,這會導緻類的個數的增加,設計更加抽象。

在某些類的算法中,用了相同的方法,造成代碼的重複。控制子類擴充,子類必須遵守算法規則。

注:如果文章有任何錯誤或不足,請各位大佬盡情指出,評論留言留下您寶貴的建議!如果這篇文章對你有些許幫助,希望可愛親切的您點個贊推薦一手,非常感謝啦
Java設計模式——模闆設計模式