2009-09-09 102 views
0

我正在寫一個將作爲守護進程運行的應用程序。 UI將通過TCP連接到它。現在,有一個名爲UiTcpInterface的類將處理UI和此守護程序之間的所有通信。如何實現「單實例」式設計?

現在,我面臨的問題是確保只有一個UiTcpInterface的實例。什麼是最好的方法來做到這一點?目前,我認爲有兩種方法:

  1. 這是典型的單件模式:使構造私有,並且該類UiTcpInterface
  2. 提供靜態instance()方法實現所有功能的UiTcpInterface靜態成員。主要方法將確保完成所有初始化。

我應該遵循以下哪兩項?你能否給我一個這兩種方法的專業清單?

謝謝:)

+0

會同時連接多少個用戶界面?你在使用線程嗎? – slashmais 2009-09-09 08:44:05

+0

http://stackoverflow.com/questions/86582/singleton-how-should-it-be-used – 2009-09-09 09:11:37

+0

嗯,多個客戶端將連接。我不知道我是否會使用線程。我使用Qt,很多需要線程的東西都是由信號和插槽來處理的 – jrharshath 2009-09-09 09:14:54

回答

0

我會選擇來實現它,因爲它會這麼容易改變到非單身,如果你以後改變主意了第一種方式。

0

SingleTon更好,
您可以隨時重置對象狀態,序列化對象(不知道這是否工作在C++)。 單身人士對靜態類別有其他好處。 我寧願使用靜態類方法來包裝一般函數(如數學類)

0

實際上,這兩者都不是主要關於單個實例,而是全局訪問。 如果您需要單個實例,請確保管理需要它的模塊 的代碼將只創建一個實例並將其傳遞給它。
如果你想讓代碼執行它,我會建議一個實例計數器和一個在構造函數中檢查它是唯一實例的斷言。

1

我寧願單身模式。一個論據是可測性。對於單元測試來說,它更簡單從instance()返回一個模擬對象。另外,如果你有例如不同的實現或不再是單個對象,更改更容易。