原创 聊聊C#中的composite模式

寫在前面 Composite組合模式屬於設計模式中比較熱門的一個,相信大家對它一定不像對訪問者模式那麼陌生,畢竟誰又沒有遇到過樹形結構呢。不過所謂溫故而知新,我們還是從一個例子出發,起底一下這個模式吧。   一個簡單例子 設想我們要建立一個

原创 聊聊C#中的Mixin

寫在前面 Mixin本意是指冰淇淋表面加的那些草莓醬,葡萄乾等點綴物,它們負責給冰淇淋添加風味。在OOP裏面也有Mixin這個概念,和它的本意相似,OOP裏面的Mixin意在爲類提供一些額外功能——在不破壞類本身或者它的繼承鏈的基礎上,在某

原创 聊聊C#中的Visitor模式

寫在前面 Visitor模式在日常工作中出場比較少,如果統計大家不熟悉的模式,那麼它榜上有名的可能性非常大。使用頻率少,再加上很多文章提到Visitor模式都着重於它克服語言單分派的特點上面,而對何時應該使用這個模式及這個模式是怎麼一點點演

原创 C++中的間接宏函數

宏函數對於每個C++程序員都決不陌生,就算是初出茅廬的C++程序員也知道如何定義、使用宏函數。   但是當初學者看到類似於以下這種宏函數嵌套的時候,可能還是會比較嘀咕, #define CONVERTSTR(x) #x #define CO

原创 一個C++引用庫的頭文件預編譯陷阱

寫在前面 老胡最近在工作中,有個場景需要使用一個第三方庫,引用頭文件,鏈接庫,編譯運行,一切都很正常,但是接下來就遇到了一個很詭異的問題,調用該庫的中的一個對象方法爲對象修改屬性的時候,會影響到對象的另外一個屬性,當時百思不得其解,直呼靈異

原创 談談C++中的數據對齊

對於C/C++程序員來說,掌握數據對齊是很有必要的,因爲只有瞭解了這個概念,才能知道編譯器在什麼時候會偷偷的塞入一些字節(padding)到我們的結構體(struct/class),也唯有這樣我們才能更好的理解、優化結構體和內存。   幾個

原创 在C++中實現aligned_malloc

malloc的默認行爲 大家都知道C++中可以直接調用malloc請求內存被返回分配成功的內存指針,該指針指向的地址就是分配得到的內存的起始地址。比如下面的代碼 int main() { void *p = malloc(1024)

原创 C#中子類對基類方法的繼承、重寫和隱藏

提起子類、基類和方法繼承這些概念,肯定大家都非常熟悉。畢竟,作爲一門支持OOP的語言,掌握子類、基類是學習C#的基礎。不過,這些概念雖然簡單,但是也有一些初學者可能會遇到的坑,我們一起看看吧。   子類繼承基類非私有方法 首先我們看最簡單的

原创 權力越大職責越大——C#中的職責鏈模式

大家好,歡迎來到老胡的博客,今天我們繼續瞭解設計模式中的職責鏈模式,這是一個比較簡單的模式。跟往常一樣,我們還是從一個真實世界的例子入手,這樣大家也對這個模式的應用場景有更深刻的理解。   一個真實的栗子 作爲上班族,相信大家對請假都不陌生

原创 讓對象擁有狀態——C#中的狀態模式

大家好,老胡又在博客和大家見面了,在聊今天的主角之前,老胡先給大家講一個以前發生的故事。   真實的故事 當老胡還是小胡的時候,跟隨團隊一起開發一款遊戲。這款遊戲是一款末日生存類遊戲,玩家可以 收集資源,兩種,一種金子,一種鐵。 升級自身

原创 如果人生也能存檔——C#中的備忘錄模式

大家好,老胡又和大家見面了。首先承認今天的博客有點標題黨了,人生是沒有存檔,也沒有後悔藥的。有存檔和後悔藥的,那是遊戲,不知道這是不是遊戲讓人格外放鬆的原因之一。 今天恰逢端午放假,就讓我們來試着做一個小遊戲吧,順帶看看備忘錄模式是如何在這

原创 C#中的閉包和意想不到的坑

雖然閉包主要是函數式編程的玩意兒,而C#的最主要特徵是面向對象,但是利用委託或lambda表達式,C#也可以寫出具有函數式編程風味的代碼。同樣的,使用委託或者lambda表達式,也可以在C#中使用閉包。 根據WIKI的定義,閉包又稱語法閉

原创 從一個計算器開始說起——C#中的工廠方法模式

工廠模式作爲很常見的設計模式,在日常工作中出鏡率非常高,程序員們一定要掌握它的用法喲,今天跟着老胡一起來看看吧。 舉個例子 現在先讓我們來看一個例子吧,比如,要開發一個簡單的計算器,完成加減功能,通過命令行讀入形如1+1的公式,輸出2這

原创 C#中的TemplateMethod模式

一個真實的故事 大學的時候就開過一門課程,講設計模式,可是大學生沒什麼編程實踐經驗,在大學裏面聽設計模式的感覺,就像聽天書。聽着都有道理,可是完全領會不到其中的奧妙,大抵原因就在於沒有走過彎路,沒有喫過設計不當的虧。古人云,“操千曲而後曉聲

原创 從漢堡加料說起——淺談C#中的Decorator模式

相信大家都在都在漢堡店吃過漢堡,有些漢堡店很有特色,推出了漢堡訂製服務,即,可以在漢堡中加料,加肉餅,加生菜之類(有點類似我們本地的肥腸粉裏面加冒結子)。更是讓不少吃貨大快朵頤,大呼過癮,加6,7層肉餅的感覺簡直不要太好。   那麼大飽口福