原创 設計模式(三)--代理模式

一、定義 代理模式,爲其它對象提供一種代理以控制對這個對象的訪問。 二、結構圖 三、例子 (1)Subject類,定義了RealSubject和Proxy的共用接口,這樣在任何使用RealSubject的地方都可以使用Proxy

原创 設計模式(四)--適配器模式

定義 適配器模式,將一個類的接口轉換成客戶希望的另外一個接口,適配器模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。 結構圖 例子 //Target類,這是客戶所期待的接口,目標可以是具體的類或者抽象的類,也可

原创 Qt之圖形視圖框架

簡介 圖形視圖提供了基於項的模型—視圖編程方式。用於管理大量的2D圖形項。 圖形視圖使用BSP樹來提供對圖形項的快速查找,使用這種技術,它可以實時地繪製大規模場景,甚至以百萬圖形項計。 圖形視圖在Qt 4.2中被引用,它替代了它的

原创 設計模式(二)--工廠方法模式

一、定義 工廠方法模式,定義一個用於創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。 二、結構圖 工廠方法模式不同於簡單工廠模式的地方在於工廠方法模式把對象的創建過程放到裏子類裏。這樣工廠父對

原创 設計模式(五)--裝飾模式

定義 裝飾模式,動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。 結構圖 例子 // Component類,組件類: class Component { protect: virtua

原创 設計模式(十二)--組合模式

定義 組合模式,將對象組合成樹形結構以表示“部分-整體”的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。 結構圖 組合模式中的角色 1. 組合部件(Component):它是一個抽象角色,爲要組合的對

原创 設計模式(七)--策略模式

定義 策略模式定義了算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化,不會影響到使用算法的客戶。 結構圖 例子 這裏用CS裏的人物作爲例子,每個人都可以有幾個武器,武器之間動態切換,武器擁有統一的攻擊命令。

原创 設計模式(六)--迭代模式

定義 迭代模式,提供一種方法順序訪問一個聚合對象中各個元素,而又不暴露該對象的內部表示。 結構圖 例子 //迭代器角色(Iterator):迭代器角色負責定義訪問和遍歷元素的接口。 template<class Item>

原创 設計模式(八)--觀察者模式

定義 觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象,這個主題對象在狀態發生變化時,會通知所有觀察者對象,使他們能夠自動更新自己。 結構圖 例子 //觀察者類: class Observer {

原创 設計模式(十)--外觀模式

定義 外觀模式,爲子系統的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一個子系統更加容易使用。 結構圖 例子 //子系統類1 class SubSystemOne { public: MethodOn

原创 Qt程序自動尋找依賴的動態庫

解決的問題 Qt打包後的程序,無法在未安裝Qt的環境下正確運行,因爲缺少相應的Qt動態庫,而如果自己一個個到Qt程序底下複製dll到自己的打包文件夾,又比較麻煩,而且容易遺漏,導致自己程序不容易在別人電腦上正常運行。 使用工具

原创 設計模式(十三)--中介者模式

定義 中介者模式,用一箇中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。 結構圖 例子 //同事基類 class Colleage { private:

原创 C++ Socket編程實例解析

Socket socket本質是編程接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程序員做網絡開發所用的接口,這就是Socket編程接口;HTTP是轎車,提供了封裝或者顯示數據的具體形式;Socket是發動機,

原创 設計模式(九)--模板方法模式

前言 前面也寫過幾篇關於設計模式的博客,其實很多人學習設計模式,就是學習其中的設計思路,然後加以利用。所以最關鍵的是對其方法的應用,具體使用什麼開發語言並不重要,我這邊主攻C++,所以舉的例子也是C++的,網上很多都是基於C#和J

原创 QStringList的使用方法總結

簡介 QStringList類提供了一個字符串列表。類似於QList < QString >。 作用:提供快速索引爲基礎的接入以及快速插入和清除。 增加字符串 append(); 或者使用<<; 合併字符串 join();