問題產生:
很多時候我們都要求**與介面分離,當在長時間運算中要反饋一些資訊的時候問題產生了--如何反饋?
在win32下我想到兩種方式:
1.通過windows訊息機制
2.通過物件**
這裡給出二個方式的解決方案:
1>(沒有乙個中間類)
直接方法是把介面物件的指標傳給演算法物件。
這樣的話有兩個問題:
1.如果介面改動了,演算法物件也要重新編繹
2.演算法可以直接防問介面,演算法倚賴於介面,**與介面分離邏輯被破壞了。
2>(有乙個中間的抽象類)
使用乙個inte***ce介面,
介面類使用繼承這個inte***ce
然後把介面類傳給演算法類,雖然傳的也是指標,但是對於資料處理物件來說,看到的只能是inte***ce.
3>(有乙個中間的抽象類,乙個中間的實用類)
使用乙個**類(乙個基類,乙個使用類)
演算法通過**類防問介面物件.
而介面物件要使用演算法的時候,只要另外把**類繼承一下,在子**類中儲存介面類的指標。
演算法通過**類中的方法防問介面。
而介面只要把相應的事件寫的新的**類中,初始化這個類的時候把自已的指標傳過去就行了。
後記:在運算類中防問介面類,這種事情會造成兩個物件的互相防問這種危險的操作。
應該把這種危險的操作都聚集在一起。是這種技術的中心思想之一,另外,各個物件之間防問都通過介面
以免造成各個物件的依賴關係過高也是推動這種技術的思想之一。
但是事情總有兩面性,如果你是在公司工作,而且時間比較吃緊,又碰到**量不是很大。
就會經常看到第一種解決方案。因為不需要每時每刻都玩這種介面與**分離的把戲。
上面的解決方案是我通過聽到inte***ce與及 **類 這兩個名詞的字面意思加上這段時間的實踐以及經過思考所想到的。
也許同原來的方法有些出入。我想我會把c#的書中的**類原理 以及 設計思想等書看過之後會有更深的理解。
update:
當然,現在我已經理解**類與訊號槽的機制與原理,這種問題最終得以漂亮的解決。
雖然網上有很多文章都有說訊號槽,但是我還是認為這個認識過程也是很重要的(主要是我的認識過程^^)。
在伺服器上長時間執行程式的一些基本命令
tmux是強大的終端復用工具,在伺服器上長期執行程式,tmux是必備的工具。其好處當我們退出伺服器時 主動退出或因網路連線不好而斷開 使用tmux可以儲存之前的工作狀態。另外,當我們強制或主動斷開伺服器連線時,如果長時間要跑的程式還在執行,程式很可能會自動停止執行。使用tmux就可以避免這樣的情況發...
MYSQL 中關於時間戳在C 中的實現
最近乙個系統要使用到mysql資料庫,裡面儲存的時候是是unix time stamp.mysql 提供了相互轉換的內建函式 from unixtime 時間戳轉換成時間 unix timestamp時間轉換成時間戳 找了一下資料,時間戳的是指 從 1970 01 01 00 00 00到現在的時間...
在SQL中關於時間日期的操作
有段時間一直使用sql獲取不同的日期時間,這是那段時間留下的一些零散筆記,在此分享 如果有更全的,希望您能補充,謝謝!獲取當前時間 select getdate 獲取當前年月日 select convert varchar 10 getdate 120 獲取當前年月 select convert v...