| 導購 | 订阅 | 在线投稿
分享
 
 
 

C語言中的面向對象(4)-面向對象思想2

來源:互聯網  2008-06-01 02:02:54  評論

3.CALLBACK函數。我覺得這是C語言的一個創舉,雖然它很簡單,就象如何把雞蛋豎起來一樣,但是你假如沒想到的話,嘿嘿。

假如說靜態入口函數實現了一個可治理的宏觀的話,CallBack就是實現了一個可進化的微觀:它使得一個函數可以在不重新編譯的情況下實現功能的添加!但是在最最早期的時候,也有蠻多人持反對態度,因爲它用了函數指針。函數指針雖然靈活,但是由于它要訪問內存兩次才可以調用到函數,第一次訪問函數指針,第二次才是真正的函數調用。它的效率是不如普通函數的。但是在一個不太苛刻的環境下,函數調用本身就不怎麽耗時,函數指針的性能又不是非凡糟糕,使用函數指針其實是一個最好的選擇。但是函數指針除了性能,最麻煩的地方就是會導致程序的「支離破碎」。試想:在程序中,你讀到一個函數指針的時候,假如你愣是不知道這個函數指針指向的是哪個函數,那個感覺真的很糟糕。(可以看後面的文章,要使用先進的程序框架,避免這樣的情況)三、Event和Message看了上面的描述,相信大家多少有些明白爲什麽要使用Event和Message了。具體的函數調用會帶來很多的問題(雖然從效率上講,這樣做是很好的)。爲了提高程序的靈活性,Event和Message的辦法産生了。用名字解析的辦法代替通常的函數調用,這樣,假如雙方對這樣的解析是一致的話,就可以達到一個統一。不過Event和Message的作用還不僅僅是如此。Event和Message還有建立進程間通信的功能。進程將自己的消息發給「控制中心」(簡單的就是一個消息隊列,和一個while循環不斷的取消息隊列的內容並執行),控制程序得到消息,分發給相應的進程,這樣其他進程就可以得到這個消息並進行響應。Event和Message是很靈活的,因爲你可以隨時添加或者關閉一個進程,(僅僅需要添加分發消息的列表就可以了)Event和Message從程序實現上將我覺得是一樣的,只不過概念不同。Event多用于指一個動作,比如硬件發生了什麽事情,需要調用一個什麽函數等等。Message多用于指一個指示,比如什麽程序發生了什麽操作命令等等。四、小結其實編程序和寫文章一樣,都是先有一個提綱,然後慢慢的豐富。先抽象化得到程序的骨架,然後再考慮各個方面的其他內容:程序極端的時候會發生什麽問題?程序的這個地方的功能現在還不完善,以後再完善會有什麽問題?程序是不是可以擴展的?本系列文章是我這些階段的一些心得,目的是抛磚引玉,希望能和大家交流,得到更多的知識。Liyuming1978@163.com (這個信箱以前發了一個文章 C優化之路,現在都快成垃圾信箱了,呵呵,網絡的力量真是強大呀)

C語言中的面向對象(4)-面向對象思想2
更多內容請看C/C++進階技術文檔專題,或

  3.CALLBACK函數。  我覺得這是C語言的一個創舉,雖然它很簡單,就象如何把雞蛋豎起來一樣,但是你假如沒想到的話,嘿嘿。 假如說靜態入口函數實現了一個可治理的宏觀的話,CallBack就是實現了一個可進化的微觀:它使得一個函數可以在不重新編譯的情況下實現功能的添加!但是在最最早期的時候,也有蠻多人持反對態度,因爲它用了函數指針。函數指針雖然靈活,但是由于它要訪問內存兩次才可以調用到函數,第一次訪問函數指針,第二次才是真正的函數調用。它的效率是不如普通函數的。但是在一個不太苛刻的環境下,函數調用本身就不怎麽耗時,函數指針的性能又不是非凡糟糕,使用函數指針其實是一個最好的選擇。但是函數指針除了性能,最麻煩的地方就是會導致程序的「支離破碎」。試想:在程序中,你讀到一個函數指針的時候,假如你愣是不知道這個函數指針指向的是哪個函數,那個感覺真的很糟糕。(可以看後面的文章,要使用先進的程序框架,避免這樣的情況)  三、Event和Message  看了上面的描述,相信大家多少有些明白爲什麽要使用Event和Message了。具體的函數調用會帶來很多的問題(雖然從效率上講,這樣做是很好的)。爲了提高程序的靈活性,Event和Message的辦法産生了。用名字解析的辦法代替通常的函數調用,這樣,假如雙方對這樣的解析是一致的話,就可以達到一個統一。不過Event和Message的作用還不僅僅是如此。  Event和Message還有建立進程間通信的功能。進程將自己的消息發給「控制中心」(簡單的就是一個消息隊列,和一個while循環不斷的取消息隊列的內容並執行),控制程序得到消息,分發給相應的進程,這樣其他進程就可以得到這個消息並進行響應。  Event和Message是很靈活的,因爲你可以隨時添加或者關閉一個進程,(僅僅需要添加分發消息的列表就可以了)Event和Message從程序實現上將我覺得是一樣的,只不過概念不同。Event多用于指一個動作,比如硬件發生了什麽事情,需要調用一個什麽函數等等。Message多用于指一個指示,比如什麽程序發生了什麽操作命令等等。  四、小結  其實編程序和寫文章一樣,都是先有一個提綱,然後慢慢的豐富。先抽象化得到程序的骨架,然後再考慮各個方面的其他內容:程序極端的時候會發生什麽問題?程序的這個地方的功能現在還不完善,以後再完善會有什麽問題?程序是不是可以擴展的?  本系列文章是我這些階段的一些心得,目的是抛磚引玉,希望能和大家交流,得到更多的知識。Liyuming1978@163.com (這個信箱以前發了一個文章 C優化之路,現在都快成垃圾信箱了,呵呵,網絡的力量真是強大呀) [url=/bbs/detail_1785239.html][img]http://image.wangchao.net.cn/it/1323424189605.gif[/img][/url] 更多內容請看C/C++進階技術文檔專題,或
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有