原创 讀懂老闆的暗語,你需要知道解釋器模式!

看過《大明王朝1566》嗎?這是Jungle所看過的歷史劇當中最最喜歡和推崇的一部劇。看過這部劇的小夥伴們都知道,嘉靖皇帝說話從來不會明明白白說出來,而是喜歡繞着說,或者說暗語,若不細細揣測,根本不知道嘉靖說的真實含義是什麼。比如他跟陳

原创 我用備忘錄模式設計了簡易的版本控制系統

“Ctrl+Z”是什麼操作?各位都用過,並且經常使用吧?撤銷!撤銷上一個操作返回上一個狀態,甚至撤銷好幾個操作,返回到幾個操作之前的狀態。這個操作非常有用,一旦我們某一步操作失誤,可以選擇撤銷操作來返回原來的無錯狀態。 那麼系統怎麼知道

原创 不知不覺就在使用的一種設計模式——模板方法模式

類的繼承你一定用過,派生類覆寫基類的方法你也一定用過,只是你可能不知道,這就是傳說中的一種設計模式…… 1.模板方法模式簡介 模板方法模式是較簡單且常用的一種設計模式,是基於類的繼承的一種代碼複用技術,其結構只存在基類和派生類之間的

原创 “牽一髮而動全身”——我用觀察者模式簡單模擬喫雞

每當Jungle公衆號【Jungle筆記】更新發布了文章,作爲Jungle的關注者,你會第一時間接到消息,(如果)然後就可以去查看、點贊、評論和轉發,接下來的一天你都高高興興; 每當Jungle更新了CSDN博客,作爲Jungle的支持

原创 如何管理和維護算法族?只需知道策略模式

同樣是排序算法,你可以選擇冒泡排序、選擇排序、插入排序、快速排序等等,也即是說,爲了實現排序這一個目的,有很多種算法可以選擇。這些不同的排序算法構成了一個算法族,你可以在需要的時候,根據需求或者條件限制(內存、複雜度等)適時選擇具體的算

原创 作爲程序員的你,必須要知道命令模式!

還記得Jungle曾經設計的Qt圖片瀏覽器嗎?鼠標點擊“上一張”,瀏覽上一張圖片;點擊“下一張”,瀏覽下一張圖片;點擊“自動播放”,則自動從上到下播放每一張圖片。是不是很有趣的一個小程序? 鼠標點擊某個鍵,就好像用戶在向圖片瀏覽器發送

原创 “欲戴王冠,必承其重”——深度解析職責鏈模式

應項目需求,公司安排Jungle去成都出差一段時間。這不,Jungle剛結束出差生活,回到公司準備報銷。算了一下,Jungle一共有大概50萬的一筆小額票據需要報銷。按照公司規定,Jungle得先去找自己的組長簽字。 組長一看,“嘖嘖嘖

原创 訪問者模式,從雙十一購物開始說起

歐耶!這周Jungle的作業終於做完了!作業是什麼呢?就是完成一個習題冊。Jungle做完之後,得讓家長檢查習題冊並簽字;第二天交到學校,組長得初步檢查作業是否做完、家長是否簽字,然後老師會評閱作業是否正確,並給出評分。 就是這麼一個習

原创 中介者模式,說一說貝殼找房

 離開學校參加工作之前,你一定是有一段時間是在找租,Jungle也是如此。 Jungle爲了找到合適的房子,沿着地鐵線一個小區一個小區的去問門衛問保安,或者照着小區門口展板上的房東的聯繫方式去找房東……此事已經過去大半年了,但Jung

原创 C++設計實現日誌系統

日誌系統幾乎是每一個實際的軟件項目從開發、測試到交付,再到後期的維護過程中極爲重要的查看軟件代碼運行流程、還原錯誤現場、記錄運行錯誤位置及上下文等的重要依據。一個高性能的日誌系統,能夠準確記錄重要的變量信息,同時又沒有冗餘的打印導致日誌

原创 如何喫到回鍋肉?找廚師啊——外觀模式實例解析

好不容易盼到週末啦!Jungle想喫點好的犒勞自己!喫什麼呢?回鍋肉!是的,喫回鍋肉! 可是這過程好麻煩啊,先得去市場裏買肉,買回來得洗好,然後切好,再炒肉,最後才能喫上!不僅過程繁雜,而且Jungle還得跟市場、廚房打交道,想想都頭大

原创 迭代器模式,給你更高大上的遍歷體驗!

寫代碼不少使用數組或者類似的集合對象吧?每次要遍歷一遍數組怎麼辦?For 循環!或者while循環,一個一個訪問每個位置的元素,直到數組末尾。STL裏面甚至有專門的迭代器,針對具體的集合類對象,有對應使用的迭代器。STL的迭代器提供了

原创 雙十一天貓購物找代理?先學會代理模式

“代理”這個詞不陌生吧?買化妝品、買奶粉、買包包,都可以通過代理代購,甚至有專門的代購網站; 或者要購置一些自己不太清楚原理好壞的物品,可以找相關代理負責幫忙購買,當然了,得支付一定費用。 在軟件設計模式中,也有一種模式可以提供與代

原创 計算機網絡——域名系統

在命令行裏敲入ping www.baidu.com,下面的提示會顯示39.156.66.14這個IP地址(顯然,這是一個A類地址)。同樣,輸入ping www.google.com,同樣會顯示一個IP地址。這是什麼意思呢? 再做一個小測

原创 狀態模式——從鬥地主開始說起

“人有悲歡離合,月有陰晴圓缺”。很多事物在特定條件下轉換成不同的狀態,在不同狀態下表現出不同的行爲。 在軟件系統中,有些對象在不同的條件下也具有不同的狀態,不同狀態之間可以相互轉換。通過判斷不同的條件分支(if...else...或