@(設計模式)[設計模式, 模板模式, template, 模板方法]
模板模式中的角色
模板模式可以很簡單的理解為,通過同乙個模具倒出來的模型。形狀上是一樣的,但是其上的花紋,紋理等卻可能完全不一樣。
這裡的模板模式,特指template method
模板方法模式。其原理為父類制定好規範——待實現的方法和模板方法。子類實現待實現的方法。呼叫者呼叫模板方法。
abstractdisplay抽象類
package com.pc.template.example;
/** * 抽象顯示類
* created by switch on 2017-02-03.
*/public
abstract
class
abstractdisplay
// 關閉
close();}}
chardisplay類package com.pc.template.example;
/** * 字元顯示類
* created by switch on 2017-02-03.
*/public
class
chardisplay
extends
abstractdisplay
@override
public
void
open()
@override
public
void
print()
@override
public
void
close()
}
stringdisplay類package com.pc.template.example;
/** * 字串顯示類
* created by switch on 2017-02-03.
*/public
class
stringdisplay
extends
abstractdisplay
@override
public
void
open()
@override
public
void
print()
@override
public
void
close()
/*** 列印一行,如下
* +------------+
*/private
void
printline()
system.out.println("+");}}
測試類package com.pc.template.example.test;
import com.pc.template.example.abstractdisplay;
import com.pc.template.example.chardisplay;
import com.pc.template.example.stringdisplay;
import org.junit.test;
/** * 顯示測試類
* created by switch on 2017-02-04.
*/public
class
displaytest
}
執行結果<>
+------+
|switch|
|switch|
|switch|
|switch|
|switch|
+------+
+---------+
|交換機|
|交換機|
|交換機|
|交換機|
|交換機|
+---------+
abstractclass
角色不僅負責實現模板方法,還負責宣告在模板方法中所使用到的抽象方法。這些抽象方法由子類concreteclass
角色負責實現。在案例中,由abstractdisplay
類扮演此角色。
該角色負責具體實現abstractclass
角色中定義的抽象方法。這裡實現的方法將會在abstractclass
角色的模板方法中被呼叫。在案例中,由chardisplay
類和stringdisplay
類扮演此角色。
——————參考《**設計模式》
學習筆記 C C 設計模式 模板模式
模板設計模式是一種非常簡單的設計模式,其主要是利用了虛函式的特性實現。非常適合應用在一些演算法 流程 業務邏輯是固定的形式,其中某些步驟的實現方式又無法確定下來的場景。以下為模擬某晶元基於串列埠通訊的韌體公升級 可以提供乙個 firmwareupgrade 的類用於使用者整合。考慮到跨平台,該類的串...
設計模式學習筆記 模板方法
概述 模板方法 templatemethod 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。templatemethod使得子類可以不改變乙個演算法的結構即可以重定義該演算法的某些特定步驟。實用性 1.一次性實現乙個演算法的不變的部分,並將可變的行為留給子類來實現。2.各子類中公共的行為應...
設計模式學習 模板模式
前面的時間學習了5種建立型設計模式和7種結構型設計模式,現在開始學習行為型的設計模式 在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。意圖 定義乙個操作...