這東西以前可能有學過吧,不過整個忘掉了,重新復習ㄧ下
在用ClassT object的時候
是將資料放在stack上
而用ClassT* object = new ClassT()的時候
則是將資料放在heap上
stack的好處是不用清理,離開function後自動清掉
不過會怕overflow
也可以使用alloca來配置記憶體
heap則是動態的利用malloc/free或是new/delete來處理
2008年11月10日 星期一
2008年11月6日 星期四
2008年11月3日 星期一
工廠模式(factory)
簡單工廠:
不是設計模式
只是一個常用的方法
將實體化的程式移到另一個factory class
工廠方法:
將實體化留到繼承的子類別來決定
(一個抽象的方法來作實體化 , 子類別要實行這個方法)
這邊的決定不是指runtime時期決定
而是指選用不同子類別時,就等於選用不同實體
不同的實體化可以經由繼承後覆寫不同的實體化方法來進行
抽象工廠:
抽象工廠訂定一個介面,所有實體工廠都得實踐這介面
不是設計模式
只是一個常用的方法
將實體化的程式移到另一個factory class
工廠方法:
將實體化留到繼承的子類別來決定
(一個抽象的方法來作實體化 , 子類別要實行這個方法)
這邊的決定不是指runtime時期決定
而是指選用不同子類別時,就等於選用不同實體
不同的實體化可以經由繼承後覆寫不同的實體化方法來進行
抽象工廠:
抽象工廠訂定一個介面,所有實體工廠都得實踐這介面
獨體模式(Singleton)
在一些只需要一個實體的場合
將建構子設為private
且用另一個static function來call 建構子
並將pointer記錄在一個static的指標
另外由於因應multi thread
有三種解決方法
1. 同步化 getInstance()
2.改成率先實體化()
3. 雙重檢查上鎖() (block synchronized)
將建構子設為private
且用另一個static function來call 建構子
並將pointer記錄在一個static的指標
另外由於因應multi thread
有三種解決方法
1. 同步化 getInstance()
2.改成率先實體化()
3. 雙重檢查上鎖() (block synchronized)
訂閱:
文章 (Atom)