Time of Update: 2018-12-03
前幾天跟Yuan Ye Pair的時候發現了這個方法 1. 經典的Visitor模式(循環相依性) public interface Document { void Accept(DocumentVisitor visitor); } public class WordDocument : Document { public void Accept(DocumentVisitor visitor) {
Time of Update: 2018-12-03
說明:本文經過一些改動,糾正了一些問題,因為原文無法修改,只好重發。不久前我收到幾位朋友發來Mail說明他們在按照本文所述進行WebService應用開發時碰到的一個問題:在用ISAPI方式編寫本文例子程式時發生AV錯誤。根據改進後的本例子程式修改了本文,請注意文中加粗部分內容。--2002-8-17 本文將做一個略複雜的例子,實現通過 SOAP 傳遞自訂的資料類型。本例子的功能是在服務端通過 ADO 的資料訪問控制項取得資料表內容,然後將其通過 SOAP 傳遞到用戶端再顯示。
Time of Update: 2018-12-03
1. 局部靜態對象 -- 堆對象?2. 預設參數 --1.只能定義一次,(標頭檔或cpp檔案)。2. 預設值的決議(resolve)從最右側開始。意味著void fun(int a = 0, int b, int c =2)是不正確的3. Overload vs TemplateOverload -- 多份實現Template - 主體不變,資料類型改變template的定義template<typename eleType> fun(const vector<eleType&
Time of Update: 2018-12-03
除了模式,上周日我和sunway還談到了C++的問題——結果周二就看到Linus Torvalds就C++的話題跟人吵架,引發了國內C++圈裡的大討論——孟岩版,雲風版,劉未鵬版。我也來扯一篇吧,不過層次肯定比這幫職業C++高手差多了。雲 風最近一次從C++回到C我是知道的,還曾經因為C是不是需要提供GC的問題跟他有過討論。那天sunway跟我討論的主要觀點跟雲風及Torvalds
Time of Update: 2018-12-03
1,不徹底的abstract即使是abstract class,也不能對實現的介面的某個成員視而不見,即下面這樣是不允許的:interface in_one{ void A();}abstract class base_one : in_one{
Time of Update: 2018-12-03
1,typedef不必要?a,typedef提供了一層間接,物件導向語言中,介面掩蓋了運行時不同具體類型間的差別,而typedef掩蓋了編譯時間不同類型間的差別,卻又不喪失型別安全b,一般語言只能返回“值”,而typedef提供了返回“類型”的能力,這是模板元編程不可或缺的機制,除非模板元編程眼下也是不必要的2,匯入在不同地點分別對#include,private成員放在標頭檔中,inline函數也放在標頭檔中進行了批判,實際上原因只有一個:C++不是平台,它沒有二進位標準,它編譯後成為本地代碼
Time of Update: 2018-12-03
原文出處及討論:
Time of Update: 2018-12-03
三軍未動,資料先行。書山碟海,只列其中最好的。統統都可以emule找到。1.快速入門 〈Accelerated.C++〉2000 〈Essential C++〉2002 Lipman 兩本都是開篇就講C++/STL,絕口不提C,而且都有中文版。2.枕頭參考 〈C++.Primer.4th〉2005 Lippman,第3版有中文版,當入門書看也無不可。 〈The.C++.Programming.Language.3rd〉Bjarne Stroustrup ,簡稱TCPL。3.
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 原型模式本質上說就是對當前資料進行複製。就像變戲法一樣,一個鴿子變成了兩個鴿子,兩個鴿子變成了三個鴿子,就這麼一直變下去。在變的過程中,我們不需要考慮具體的資料類型。為什麼呢?因為不同的資料有自己的複製類型,而且每個複製函數都是虛函數。 用C++怎麼編寫呢,那就是先寫一個基類,再編寫一個子類。就是這麼簡單。class data{public: data () {}
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 責任鏈模式是很實用的一種實際方法。舉個例子來說,我們平常在公司裡面難免不了報銷流程。但是,我們知道公司裡面每一級的領導的報批額度是不一樣的。比如說,科長的額度是1000元,部長是10000元,總經理是10萬元。 那麼這個時候,我們應該怎麼設計呢?其實可以這麼理解。比如說,有人來找領導報銷費用了,那麼領導可以自己先看看自己能不能報。如果費用可以順利報下來當然最好,可是萬一報不下來呢?
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 組合模式聽說去很玄乎,其實也並不複雜。為什麼?大家可以先想一下資料結構裡面的二叉樹是怎麼回事。為什麼就是這麼一個簡單的二叉樹節點既可能是分葉節點,也可能是父節點?typedef struct _NODE{ void* pData; struct _NODE* left; struct _NODE* right;}NODE; 那什麼時候是葉子節點,其實就是left、
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 前面我們寫過的原廠模式實際上是對產品的抽象。對於不同的使用者需求,我們可以給予不同的產品,而且這些產品的介面都是一致的。而抽象工廠呢?顧名思義,就是說我們的工廠是不一定的。怎麼理解呢,舉個例子。 假設有兩個水果店都在賣水果,都賣蘋果和葡萄。其中一個水果店買白蘋果和白葡萄,另外一個水果店賣紅蘋果和紅葡萄。所以說,對於水果店而言,儘管都在賣水果,但是兩個店賣的品種不一樣。
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 模板對於學習C++的同學,其實並不陌生。函數有模板函數,類也有模板類。那麼這個模板模式是個什麼情況?我們可以思考一下,模板的本質是什麼。比如說,現在我們需要編寫一個簡單的比較模板函數。template <typename type>int compare (type a, type b){ return a > b ? 1 : 0;}
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 使用過C++的朋友大概對迭代器模式都不會太陌生。這主要是因為我們在編寫代碼的時候離不開迭代器,隊列有迭代器,向量也有迭代器。那麼,為什麼要迭代器呢?這主要是為了提煉一種通用的資料存取方法。 比如說,現在有一個資料的容器,typedef struct _Container{ int* pData; int size; int length;
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 面板模式是比較簡單的模式。它的目的也是為了簡單。什麼意思呢?舉個例子吧。以前,我們逛街的時候吃要到小吃一條街,購物要到購物一條街,看書、看電影要到文化一條街。那麼有沒有這樣的地方,既可以吃喝玩樂,同時相互又靠得比較近呢。其實,這就是悠閑廣場,遍布全國的萬達廣場就是幹了這麼一件事。 首先,我們原來是怎麼做的。typedef struct _FoodSteet{ void
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 代理模式是一種比較有意思的設計模式。它的基本思路也不複雜。舉個例子來說,以前在學校上網的時候,並不是每一台pc都有上網的許可權的。比如說,現在有pc1、pc2、pc3,但是只有pc1有上網許可權,但是pc2、pc3也想上網,此時應該怎麼辦呢?
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 關於軟體設計方面的書很多,比如《重構》,比如《設計模式》。至於軟體開發方式,那就更多了,什麼極限編程、精益方法、敏捷方法。隨著時間的推移,很多的方法又會被重新提出來。
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 享元模式看上去有點玄乎,但是其實也沒有那麼複雜。我們還是用樣本說話。比如說,大家在使用電腦的使用應該少不了使用WORD軟體。使用WORD呢, 那就少不了設定模板。什麼模板呢,比如說標題的模板,本文的模板等等。這些模板呢,又包括很多的內容。哪些方面呢,比如說字型、標號、字距、行距、大小等等。typedef struct _Font{ int type; int
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 有過面試經驗的朋友,或者對設計模式有點熟悉的朋友,都會對單件模式不陌生。對很多面試官而言,單件模式更是他們面試的保留項目。其實,我倒認為,單件模式算不上什麼設計模式。最多也就是個技巧。 單件模式要是用C++寫,一般這麼寫。#include <string.h>#include <assert.h>class object{public: static
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 原廠模式是比較簡單,也是比較好用的一種方式。根本上說,原廠模式的目的就根據不同的要求輸出不同的產品。比如說吧,有一個生產鞋子的工廠,它能生產皮鞋,也能生產膠鞋。如果用代碼設計,應該怎麼做呢?typedef struct _Shoe{ int type; void (*print_shoe)(struct _Shoe*);}Shoe;