C語言和設計模式(繼承、封裝、多態)25

來源:互聯網
上載者:User

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】

 

    記得還在我們大學C++第一門課的時候,老師就告訴我們說,C++是一門物件導向的語言。C++有三個最重要的特點,即繼承、封裝、多態。等到後來隨著編碼的增多和工作經驗的積累,我也慢慢明白了物件導向的含義。可是,等我工作以後,使用的程式設計語言更多的是C語言,這時候我又想能不能把C語言變成物件導向的語言呢?等到後來通過思考和實踐,我發現其實C語言也是可以物件導向的,也是可以應用設計模式的,關鍵就在於如何?物件導向語言的三個重要屬性。

(1)繼承性

 

[cpp] view plaincopyprint?
  1. typedef struct _parent  
  2. {  
  3.     int data_parent;  
  4.   
  5. }Parent;  
  6.   
  7. typedef struct _Child  
  8. {  
  9.     struct _parent parent;  
  10.     int data_child;  
  11.   
  12. }Child;  

typedef struct _parent<br />{<br /> int data_parent;</p><p>}Parent;</p><p>typedef struct _Child<br />{<br /> struct _parent parent;<br /> int data_child;</p><p>}Child;<br />    在設計C語言繼承性的時候,我們需要做的就是把基礎資料放在繼承的結構的首位置即可。這樣,不管是資料的訪問、資料的強轉、資料的訪問都不會有什麼問題。

(2)封裝性

[cpp] view plaincopyprint?
  1. struct _Data;  
  2.   
  3. typedef  void (*process)(struct _Data* pData);  
  4.   
  5. typedef struct _Data  
  6. {  
  7.     int value;  
  8.     process pProcess;  
  9.       
  10. }Data;  

struct _Data;</p><p>typedef void (*process)(struct _Data* pData);</p><p>typedef struct _Data<br />{<br /> int value;<br /> process pProcess;</p><p>}Data;    封裝性的意義在於,函數和資料是綁在一起的,資料和資料是綁在一起的。這樣,我們就可以通過簡單的一個結構指標訪問到所有的資料,遍曆所有的函數。封裝性,這是類擁有的屬性,當然也是資料結構體擁有的屬性。

 

(3)多態

 

[cpp] view plaincopyprint?
  1. typedef struct _Play  
  2. {  
  3.     void* pData;  
  4.     void (*start_play)(struct _Play* pPlay);  
  5. }Play;  

typedef struct _Play<br />{<br /> void* pData;<br /> void (*start_play)(struct _Play* pPlay);<br />}Play;<br />    多態,就是說用同一的介面代碼處理不同的資料。比如說,這裡的Play結構就是一個通用的資料結構,我們也不清楚pData是什麼資料,start_play是什麼處理函數?但是,我們處理的時候只要調用pPlay->start_play(pPlay)就可以了。剩下來的事情我們不需要管,因為不同的介面會有不同的函數去處理,我們只要學會調用就可以了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.