什麼是簡單工廠模式?
答:使用乙個單獨的類來做建立勢力的過程,就是工廠。比如:
(1)有兩個類:class requestcodec : public codec
和class respondcodec : public codec
,兩個類都繼承抽象類class codec
;
(2)若要建立兩個類的物件時,需要直接呼叫該類的建構函式;
(3)但若使用工廠模式,可以直接建立工廠類的物件,通過呼叫工廠類中已經實現好的成員函式,根據傳參不同來建立兩個類的物件;
(4)通過工廠模式建立的兩個類的物件是codec型別物件,但由於多型,因此可以直接當作子類物件來使用。
簡單工廠模式實現與使用?
//1. 兩個類繼承抽象類codec
class
requestcodec
:public codec
class
respondcodec
:public codec
//2.建立工廠類
class
basefactory
~basefactory()
通過成員函式建立兩個類的物件
codec *
createcodec
(int flag)
else
if(flag ==2)
//requestcodec類
//返回codec型別的物件
return c;}}
;
工廠類的使用
basefactory *fac =
newbasefactory()
;//建立工廠類物件
codec *codec = fac.
createcodec(1
);//生成父類物件指標
codec-
>
encodemsg()
;//通過多型,父類指標指向子類物件
什麼是工廠模式?
答:(1)簡單工廠模式只有乙個工廠類,使用時只要傳入不同的引數,就可以建立不同類的物件。但若要增加新的類到工廠類時,就需要修改工廠類的**,擴充套件性差。
(2)而工廠模式可以建立多個工廠類,所有工廠類都繼承乙個抽象類工廠基類,且每個工廠類只用來生成一種類的物件,使用時建立基類的工廠類物件指標,通過多型就可以呼叫不同派生工廠類中成員函式,以此來建立不同的類物件。若要建立新的類的物件時,只需要增加工廠類的派生類即可,而不許修改工廠類的**。
工廠模式的實現及使用?
//1.兩個類都繼承抽象類codec
class
requestcodec
:public codec
class
respondcodec
:public codec
//2.建立工廠類基類
class
basefactory
//工廠派生類必須要建立codec不同派生類的物件
virtual codec *
createcodec()
;~basefactory()
};//3.建立工廠派生類,每個類之建立一種類物件
class
requestfactory
//建立requestcodec物件函式
codec *
createrequest()
~requestfactory()
};class
respondfactory
//建立respondcodec物件函式
codec *
createrequest()
~respondfactory()
};
工廠類的使用
//建立工廠基類物件指標指向工廠派生類物件
basefactory *bf =
newrequestfactory()
;//通過多型,基類物件指標呼叫派生類成員函式來建立指定類基類的物件指標
codec *codec = bf-
>
creatrequest()
;//通過多型,基類物件指標呼叫派生類成員函式
codec-
>
encodemsg()
;
套接字通訊
利用三元組 ip位址,協議,埠 就可以標識網路的程序 socket即是一種特殊的檔案,一些socket函式就是對其進行的操作 讀 寫io 開啟 關閉 socket是 open write read close 模式的一種實現,那麼socket就提供了這些操作對應的函式介面 tcp通訊中的socket...
套接字通訊
套接字家族的名字 af unix unix一切皆檔案,基於檔案的套接字呼叫的就是底層的檔案系統來取資料,兩個套接字程序執行在同一機器,可以通過訪問同乙個檔案系統間接完成通訊 套接字家族的名字 af inet 還有af inet6被用於ipv6,還有一些其他的位址家族,不過,他們要麼是只用於某個平台,...
socket 套接字通訊
要通過internet進行通訊,至少需要一對套接字,其中乙個執行在客戶端,稱之為clientsocket,另乙個執行於伺服器端面,稱為serversocket。根據連線啟動的方式以及本地要連線的目標,套接字之間的連線過程可以分為三個步驟 伺服器監聽 客戶端請求 連線確認。伺服器監聽是指服務端套接字並...