原创 設計模式《十五》——責任鏈模式

簡介        責任鏈模式(Chain of Responsibility Pattern)爲請求創建了一個接收者對象的鏈。每個對象持有對下一個對象的引用,這樣就會形成一條鏈,請求在這條鏈上傳遞,直到某一對象決定處理該請求。這種模式給

原创 設計模式《十四》——命令模式

簡介        命令模式(Command)是一種數據驅動的模式,Command的類封裝了對目標對象的調用行爲以及調用參數。其目的是將一個請求封裝成一個對象,從而使您可以用不同的請求對客戶進行參數化。        在面向對象的程序設計

原创 設計模式《十三》——模板模式

簡介        一個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現。其目的是定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。 角色

原创 設計模式《十二》——享元模式

簡介 用於減少創建對象的數量,實現對象的共享,當對象多的時候可以減少內存佔用和提高性能。   角色與職責 Flyweight:描述一個接口,通過這個接口flyweight可以接受並作用於外部狀態; ConcreteFlyweight:實

原创 設計模式《十一》——外觀模式

簡介        觀模式是爲了解決類與類之家的依賴關係的,像spring一樣,可以將類和類之間的關係配置到配置文件中,而外觀模式就是將他們的關係放在一個Facade類中,降低了類類之間的耦合度。   角色與職責   Facade:爲方

原创 設計模式《十》——組合模式

簡介        組合模式又叫部分-整體模式,用於把一組相似的對象當作一個單一的對象,依據樹狀結構來組合對象。使得用戶對單個對象和組合對象的使用具有一致性。例如,公司職員組織關係。   角色與職責   Component:組合類中的抽

原创 設計模式《九》——橋接模式

簡介            橋接模式就是把事物和其具體實現分開,使他們可以各自獨立的變化。橋接的用意是:將抽象化與實現化解耦,使得二者可以獨立變化,像我們常用的JDBC橋DriverManager一樣,JDBC進行連接數據庫的時候,在各

原创 設計模式《八》——適配器模式

簡介 適配器模式將某個類的接口轉換成客戶端期望的另一個接口表示,目的是消除由於接口不匹配所造成的類的兼容性問題。主要分爲三類:類的適配器模式、對象的適配器模式、接口的適配器模式。 角色與職責   實例 #include <iostre

原创 Linux Cgroups詳解

1、導言: Linux系統每個進程都可以自由競爭系統資源,有時候會導致一些次要進程佔用了系統某個資源(如CPU)的絕大部分,主要進程就不能很好地執行,從而影響系統效率,重則在linux資源耗盡時可能會引起錯殺進程。因此linux引入了li

原创 設計模式《七》——裝飾模式

簡介 顧名思義,裝飾模式就是給一個對象增加一些新的功能,而且是動態的,要求裝飾對象和被裝飾對象實現同一個接口,裝飾對象持有被裝飾對象的實例。 角色與職責 Component:抽象接口,可以給這些對象動態地增加職責。 ConcreteCo

原创 設計模式《六》——代理模式

簡介:        其實每個模式名稱就表明了該模式的作用,代理模式就是多一個代理類出來,替原對象進行一些操作,比如我們在租房子的時候回去找中介,爲什麼呢?因爲你對該地區房屋的信息掌握的不夠全面,希望找一個更熟悉的人去幫你做,此處的代理

原创 設計模式總概述

前言 最近想寫一個設計模式的專欄,在寫具體設計模式前還是寫寫設計模式的總分類吧。 六大原則 開閉原則:對擴展開放,對修改關閉,多使用抽象類和接口。 里氏替換原則:基類可以被子類替換,使用抽象類繼承,不使用具體類繼承。 依賴倒轉原則:要依賴

原创 設計模式——抽象工廠方法

1、簡介 工廠方法的絕點是隻能生成一類產品,不同生成不同類別的產品,而抽象工廠便可以解決此問題。 工廠方法模式和抽象工廠模式不好分清楚,他們的區別如下: 工廠方法模式: 一個抽象產品類,可以派生出多個具體產品類。   一個抽象工廠類,可以

原创 ZeroMQ資料引導

簡介:        ZeroMQ是一種基於消息隊列的多線程網絡庫,其對套接字類型、連接處理、幀、甚至路由的底層細節進行抽象,提供跨越多種傳輸協議的套接字。提供的套接字可以在多種協議中傳輸消息,如線程間、進程間、TCP、廣播等。你可以使用

原创 模板類使用友元函數重載操作符需要注意的問題

當我們在同一個cpp文件裏使用friend函數重載操作符,但是聲明和實現分開時,我們需要對friend函數的聲明做特殊處理,否則會產生如下錯誤: 模板類friend函數在外面.obj : error LNK2019: 無法解析的外部符號