開竅了!如何為緩存工具類(CacheUtil中的static方法)定義interface(上)
兩個不同策略的緩存工具類 在我們系統的基建包裏,有一個基於redis的get/set等基礎api封裝的 CacheUtil。 CacheUtil 主要有下面2個靜態方法: import java.util.function.Supplier; public class CacheUtil { /** * 獲取緩存。如果沒有,則設置 */ public s
昵稱 buguge
貢獻者22
粉絲0
兩個不同策略的緩存工具類 在我們系統的基建包裏,有一個基於redis的get/set等基礎api封裝的 CacheUtil。 CacheUtil 主要有下面2個靜態方法: import java.util.function.Supplier; public class CacheUtil { /** * 獲取緩存。如果沒有,則設置 */ public s
昵稱 buguge
兩個不同策略的緩存工具類 在我們系統的基建包裏,有一個基於redis的get/set等基礎api封裝的 CacheUtil。 CacheUtil 主要有下面2個靜態方法: import java.util.function.Supplier; public class CacheUtil { /** * 獲取緩存。如果沒有,則設置 */ public s
昵稱 buguge
回顧享元模式,考慮實作它的各種問題。 Prologue 略過 FlyWeight Pattern 理論 享元模式,是將複雜對象的相同的組成元素抽出並單獨維護的一種結構型設計模式。這些相同的組成元素被稱為共享元件,它們在一個單獨的容器中被唯一性地管理,而複雜對象只需持有到該唯一實例的參考,而無需重複創建這樣的相同的元素,從而能夠大幅度地削減內存佔用。 以字處理器為例,每個字符都具有獨立的、區別於其它
昵稱 hedzr
上上上回的 談 C++17 裏的 Observer 模式 介紹了該模式的基本構造。後來在 談 C++17 裏的 Observer 模式 - 補/2 裏面提供了改進版本,主要聚焦於針對多線程環境的暴力使用的場景。再後來又有一篇 談 C++17 裏的 Observer 模式 - 再補/3,談的是直接綁定 lambda 作為觀察者的方案。 Observer Pattern - Part IV 所以嘛,我
昵稱 hedzr
概念 程序的生命週期內只有一個實例的存在 場景 日誌記錄器、數據庫連接池、線程池等 實現 #include iostream #include mutex #include boost/noncopyable.hpp using namespace std; // 版本一 // 創建即初始化-eager initiali
昵稱 kkkK2008
在討論 Segregation of Duties (SoD) 的概念前,我們先明確它在計算機軟件設計和企業管理中的基本含義。SoD,中文可以翻譯為 職責分離 或 權責分離,是一種防範風險和提高系統安全性的管理策略,要求將關鍵職責分配給多個人或系統,以避免利益衝突、減少錯誤和欺詐的風險。在面向對象設計領域,這一概念同樣適用,意味着系統的不同職責應該由不同的對象承擔,以保持系統的高內聚和低耦合性,進
昵稱 註銷
中介者模式(Mediator Pattern) 中介者模式(Mediator Pattern)是一種行為型設計模式,它通過引入一箇中介者對象,來減少多個對象之間的直接依賴,使對象之間的通信變得鬆耦合。對象不直接相互引用,而是通過中介者與其他對象交互。這有助於提高系統的可維護性和擴展性。 核心思想: 將對象間複雜的依賴關係抽象到中介者中,從而使對象之間的依賴關係變得簡單。 主要組成部分 中介者接
昵稱 淵渟嶽
簡介 命令模式(Command Pattern)是一種行為型設計模式,它將請求或操作封裝為獨立的對象,允許用户參數化客户端、隊列請求、記錄日誌,並支持撤銷操作。該模式的核心思想是將“請求的發起者”與“請求的執行者”解耦,使兩者通過命令對象進行交互。 角色組成: 調用者(Invoker),負責發起請求的類 命令(Command),一個接口,通常僅聲明一個執行命令的方法 具體命令(Concre
昵稱 花酒鋤作田
狀態模式(State Pattern) 狀態模式(State Pattern)是一種行為設計模式,它允許對象在其內部狀態改變時改變其行為,看起來像是改變了其類。這種模式通常用於解決對象在運行時狀態多變且行為複雜的問題。 核心思想:將狀態與行為綁定,每種狀態對應一個具體類有獨立的行為邏輯,狀態的切換隻需更換狀態對象,並且狀態流轉在行為邏輯中完成。 主要組成部分 Context(上下文):
昵稱 淵渟嶽
解釋器模式(Interpreter Pattern) 解釋器模式(Interpreter Pattern)是一種行為型設計模式,用於定義一種語言的文法表示,並提供一個解釋器來解釋該語言中的句子。這種模式通常用於開發需要解析、解釋和執行特定語言或表達式的應用程序。 主要目的是為特定類型的問題定義一種語言,然後用該語言的解釋器來解決問題。 主要組成部分 解釋器模式的結構通常包括以下幾個部分:
昵稱 淵渟嶽
簡介 備忘錄模式(Memento Pattern)是一種行為型設計模式,它允許生成對象狀態的快照並在以後將其還原。備忘錄模式不會影響它所處理對象的內部結構,也不會影響快照中存儲的數據。簡單來説,它就像遊戲中的“保存”和“加載”功能。 組成角色: Originator(發起人): 主要用於生成自身狀態的快照,在需要時可以通過快照恢復自身狀態。 Memento(備忘錄): 一個對象,用於存儲Or
昵稱 花酒鋤作田
本人主要講述設計模式怎麼去選擇,這僅僅是不知從何下手提供一個抓手的東西,並不是銀彈。常想、多用,積累經驗後,方可靈活運用,做到無模式勝有模式,才可能會在複雜場景中,設計出高質量的系統。 設計模式的選擇是一個從問題到解決方案的遞進過程。通過明確問題類型、分析目標特性、遵循設計原則以及結合場景需求,可以高效地篩選出最佳設計模式,從而達到優化系統設計,提升代碼質量和可維護性。設計模式不僅是一種工具,更是
昵稱 淵渟嶽
1. 學習設計模式的意義:讓代碼更優雅,讓開發更從容 設計模式的學習常常被貼上“枯燥”“抽象”的標籤,但它更像一本軟件開發的“烹飪食譜”——不是要求你死記硬背,而是教會你如何用更巧妙的方式組合代碼的“食材”,最終做出一道既美味(功能完善)又美觀(易於維護)的“佳餚”。以下是它的核心價值與意義: 1.1. 像搭積木一樣寫代碼 想象一下,你在開發一個電商系統: 當需要管理全局唯一的購物車實例時,
昵稱 淵渟嶽
本文主要分享我的設計模式筆記PDF文檔:《掌握設計模式:23種經典模式實踐、選擇、價值與思想》 這只是設計模式的秘籍1:《掌握設計模式:23種經典模式實踐、選擇、價值與思想》 後續還會分享練手項目秘籍2:設計模式實戰項目--markdown文本編輯器軟件開發(開放所有源代碼) 前言 為什麼要寫這份資料? 為了更方便閲讀和學習設計模式,我將之前發的所有有關設計模式的文章彙
昵稱 淵渟嶽
🙌開源項目地址 🌍 GitHub 開源地址(YtyMark-java) 歡迎提交 PR、Issue、Star ⭐️! 1. 簡述 YtyMark-java項目分為兩大模塊: UI界面(ytyedit-mark) markdown文本解析和渲染(ytymark) 本文主要內容為核心模塊--markdown文本解析和渲染。 關於markdown文本解析器怎麼設計,
昵稱 淵渟嶽
🙌開源項目地址 🌍 GitHub 開源地址(YtyMark-java) 歡迎提交 PR、Issue、Star ⭐️! 📌1. 簡述 YtyMark-java項目分為兩大模塊: UI界面(ytyedit-mark) markdown文本解析和渲染(ytymark) 本文主要內容為UI界面相關功能。 關於markdown文本解析器UI界面的實現。在這整個流程中,
昵稱 淵渟嶽
手寫解析器、渲染器、主題樣式、自定義彈窗和精細的撤銷/恢復機制等。 📌整體總結 YtyMark-java 項目,從用户輸入到用户查看到實時渲染結果的全過程 監聽文本區域內容是否發生變化 解析和渲染:“原始文本的塊裁剪”→“塊級元素解析” → “行內元素解析” → “渲染” 四大階段 將渲染結果重新刷新展示出來 從UI界面到核心的解析渲染,通過一系列
昵稱 淵渟嶽
歷經一年時間,設計模式手冊和練手項目已全部編寫完成 秘籍1設計模式手冊:《掌握設計模式:23種經典模式實踐、選擇、價值與思想》 秘籍2練手項目:設計模式實戰項目--markdown文本編輯器軟件開發(已開源) 📝秘籍1 設計模式手冊 該手冊將為你回答: 什麼是設計模式? 怎麼學習設計模式 為什麼學了設計模式卻用不上? 設計模式在開發流程中如何
昵稱 淵渟嶽
《Head First設計模式》讀書筆記 相關代碼:Vks-Feng/HeadFirstDesignPatternNotes: Head First設計模式讀書筆記及相關代碼 讓你的對象知悉現狀,不會錯過對象感興趣的事 對象甚至在運行時可決定是否要繼續被通知 JDK中使用最多的模式之一 本節例子 系統三部分: 氣象站:獲取實際氣象數據的物理裝置 WeatherData對象(
昵稱 Vcats
兩個不同策略的緩存工具類 在我們系統的基建包裏,有一個基於redis的get/set等基礎api封裝的 CacheUtil。 CacheUtil 主要有下面2個靜態方法: import java.util.function.Supplier; public class CacheUtil { /** * 獲取緩存。如果沒有,則設置 */ public s
昵稱 buguge
《Head First設計模式》讀書筆記 相關代碼:Vks-Feng/HeadFirstDesignPatternNotes: Head First設計模式讀書筆記及相關代碼 給愛用繼承的人一個全新的設計眼界 本節用例 Starbuzz咖啡因迅速擴展,準備更新訂單系統,以合乎其飲料供應需求 原有類設計如下: 在購買咖啡時,可以在其中加入各種調料,系統需要考慮調料部分計算費用 第
昵稱 Vcats
《Head First設計模式》讀書筆記 相關代碼:Vks-Feng/HeadFirstDesignPatternNotes: Head First設計模式讀書筆記及相關代碼 除了new操作符外,還有更多製造對象的方法 “實例化”這個活動不應該總是公開地進行 初始化經常造成“耦合”問題 實例化的問題 當看到“new”就會想到“具體” 使用new時,就是在針對實現編程,而非針對接
昵稱 Vcats
本文將大量涉及C語言高級操作,如函數指針、結構體指針、二級指針、指針頻繁引用解引用、typedef、static、inline和C語言項目結構等知識,請確保自己不會被上述知識衝擊,如果沒有這顧慮,請盡情享受~ 摘要: 本文探討在C語言中模擬面向對象編程(OOP)的"一點五編程"技術,通過函數指針、結構體嵌套和二級指針強制轉換實現類、接口與多態。開發流程分聲明(接口/類結構體、類型轉換函數)、
昵稱 FreakStudio