模板方法模式,定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變乙個演算法的結構即重定義該演算法的某些特定步驟。
父類可以成為子類的模板,所有重複的**都應該要上公升到父類去,而不是讓每個子類都去重複。
當我們要完成某一細節層次一致的乙個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,我們通常考慮用模板方法模式來處理。
模板方法模式是通過把不變形為搬移到超類,去除子類中的重複**來體現它的優勢。它提供了乙個很好的**復用平台。
當不變的和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重複出現。我們通過模板方法模式可以把這些行為搬移到單一的地方,這樣就幫助子類擺脫重複的不變行為的糾纏。
抽象基類,包含模板getbook,把具體不同的細節交給getname完成
#ifndef _abstractclass_hpp
#define _abstractclass_hpp#include
#include
using
namespace
std;
class
abstractclass
};#endif
//實現具體細節的子類
#ifndef _concreteclass_hpp
#define _concreteclass_hpp#include
"abstractclass.hpp
"#include
#include
using
namespace
std;
class concreteclass : public
abstractclass
};#endif
//客戶端程式
#include"
concreteclass.hpp
"using
namespace
std;
intmain(){
concreteclass cc;
cc.getbook();
getchar();
return
0;
chapter10使用Using機制
使用using機制 1.操作硬碟,就需要try.catch 2.為了簡化try.catch的機制,使用using 3.凡是使用了using 自動釋放資源的地方,必須實現idisposable介面 源 使用using自動釋放資源,不用再寫fs.close using system using syst...
chapter 10 迴圈網路架構
語言模型是rnn常關注的乙個問題,我們希望能讓演算法能夠在我們給出乙個首字元的情況下,給出後面的字元的 在我看來,這不僅可以用於搜尋引擎,在考慮了語境後,或許也可以用來寫文章或繪畫。以下是rnn的幾個例項 我們可以使用莎士比亞的文集來訓練演算法,來得到習得了莎翁文風的演算法。將一大堆代數托補學教材的...
Chapter10 泛型演算法
泛型演算法的基礎是迭代器。迭代器令演算法不依賴於容器,但是演算法依賴於元素型別的操作。也即 演算法永遠不會執行容器的操作。那麼,如果想向容器中新增元素或者執行其他的一些操作呢?標準庫提供了插入迭代器來完成。但演算法自身永遠不會做這樣的操作。唯讀演算法 1 int sum accumulate vec...