原创 模式設計之創建對象:建造者模式(Builder模式)詳解

在軟件開發過程中有時需要創建一個複雜的對象,這個複雜對象通常由多個子部件按一定的步驟組合而成。例如,計算機是由 CPU、主板、內存、硬盤、顯卡、機箱、顯示器、鍵盤、鼠標等部件組裝而成的,採購員不可能自己去組裝計算機,而是將計算機的配置要求告

原创 模式設計之創建對象:原型模式(Prototype)詳解

引子: 在有些系統中,存在大量相同或相似對象的創建問題,如果用傳統的構造函數來創建對象,會比較複雜且耗時耗資源,用原型模式生成對象就很高效,就像孫悟空拔下猴毛輕輕一吹就變出很多孫悟空一樣簡單。 原型模式的定義與特點 原型(Prototy

原创 Vim 項目重要維護者去世,Vim 之父以 Vim 9 悼念摯友

2 月 20 日,開源開發者、Vim 項目主要維護者之一 Sven Guckes 在柏林去世,享年 55 歲。 隨後,Vim 之父 Bram Moolenaar 發佈郵件沉痛悼念摯友。其透露,Sven Guckes 於 2021 年 12

原创 模式設計之結構型模式:外觀模式(Facade模式)詳解

在現實生活中,常常存在辦事較複雜的例子,如辦房產證或註冊一家公司,有時要同多個部門聯繫,這時要是有一個綜合部門能解決一切手續問題就好了。 軟件設計也是這樣,當一個系統的功能越來越強,子系統會越來越多,客戶對系統的訪問也變得越來越複雜。這時

原创 模式設計之行爲模式:適配器模式(Adapter模式)詳解

在現實生活中,經常出現兩個對象因接口不兼容而不能在一起工作的實例,這時需要第三者進行適配。例如,講中文的人同講英文的人對話時需要一個翻譯,用直流電的筆記本電腦接交流電源時需要一個電源適配器,用計算機訪問照相機的 SD 內存卡時需要一個讀卡器

原创 模式設計之行爲模式:裝飾器模式(Decorator模式)詳解

裝飾模式又名包裝(Wrapper)模式。裝飾模式以對客戶端透明的方式擴展對象的功能,是繼承關係的一個替代方案。在軟件開發過程中,有時想用一些現存的組件。這些組件可能只是完成了一些核心功能。但在不改變其結構的情況下,可以動態地擴展其功能。所有

原创 模式設計之行爲模式:策略模式(Strategy)詳解

在現實生活中常常遇到實現某種目標存在多種策略可供選擇的情況,例如,出行旅遊可以乘坐飛機、乘坐火車、騎自行車或自己開私家車等,超市促銷可以釆用打折、送商品、送積分等方法。 在軟件開發中也常常遇到類似的情況,當實現某一個功能存在多種算法或者策

原创 模式設計:觀察者模式(Observer模式)詳解

在現實世界中,許多對象並不是獨立存在的,其中一個對象的行爲發生改變可能會導致一個或者多個其他對象的行爲也發生改變。例如,某種商品的物價上漲時會導致部分商家高興,而消費者傷心;還有,當我們開車到交叉路口時,遇到紅燈會停,遇到綠燈會行。這樣的例

原创 模式設計之行爲模式:組合模式(Composite模式)詳解

在現實生活中,存在很多“部分-整體”的關係,例如,大學中的部門與學院、總公司中的部門與分公司、學習用品中的書與書包、生活用品中的衣服與衣櫃、以及廚房中的鍋碗瓢盆等。在軟件開發中也是這樣,例如,文件系統中的文件與文件夾、窗體程序中的簡單控件與

原创 模式設計之創建對象:單例模式(Singleton)詳解

在有些系統中,爲了節省內存資源、保證數據內容的一致性,對某些類要求只能創建一個實例,這就是所謂的單例模式。 單例模式的定義與特點 單例(Singleton)模式的定義:指一個類只有一個實例,且該類能自行創建這個實例的一種模式。例如,Win

原创 模式設計之行爲模式:橋接模式(Bridge模式)詳解

在現實生活中,某些類具有兩個或多個維度的變化,如圖形既可按形狀分,又可按顏色分。如何設計類似於 Photoshop 這樣的軟件,能畫不同形狀和不同顏色的圖形呢?如果用繼承方式,m 種形狀和 n 種顏色的圖形就有 m×n 種,不但對應的子類很

原创 模式設計之行爲模式:代理模式(Proxy模式)詳解

在有些情況下,一個客戶不能或者不想直接訪問另一個對象,這時需要找一箇中介幫忙完成某項任務,這個中介就是代理對象。例如,購買火車票不一定要去火車站買,可以通過 12306 網站或者去火車票代售點買。又如找女朋友、找保姆、找工作等都可以通過找中

原创 Git安裝設置

一:介紹 Git是一個開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。   二:安裝 安裝Git for Windows,網址:https://git-scm.com/   選擇安裝組件: 上圖紅框內的選項是默認勾選

原创 WPS設置如何設置紙張爲橫向或縱向

打開要調整設置紙張方向的WPS文檔,鼠標點擊在要調整紙張方向的上一頁(比如,要把第3頁變成橫向,那麼鼠標就點擊放在第2頁內容的末尾),點擊上方的“頁面佈局” 點擊“頁面佈局”的下拉菜單,點擊“分隔符” 出現下拉菜單,點擊“下一頁分節符”

原创 Qt學習:Qt 多線程編程之敲開 QThread 類的大門

本文結構如下: 概述 優雅的開始我們的多線程編程之旅 我們該把耗時代碼放在哪裏? 再談 moveToThread() 啓動線程前的準備工作 開多少個線程比較合適? 設置棧大小 啓動線程/退出線程 啓動線程 優雅的退出線程