日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言实现面向接口编程

發布時間:2023/12/2 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言实现面向接口编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

面向接口編程

話不多說,先上一個面向接口編程的Demo:

參考demo:

?1#include?2#include?34/********************************************5?*?Note:?共用接口的定義?6?*?author:bug菌?7?*******************************************/8struct?Interface?{9????int?(*Initial)(void*?handle);10????int?(*Send)(void*?handle,char?*?buff,int?count);11????int?(*Recv)(void*?handle,char?*?buff);12????int?(*Destory)(void*?handle);13};1415?/********************************************16?*?Note:?具體類型的定義?17?*?author:bug菌?18?*******************************************/19typedef?struct?_tag_protocolType1?{20????struct?Interface?bi;?//公共通信接口?21????char*?CommTypeName;?//通信名稱?22????//不同通信類型的其他成員......?23}protocolType1;242526/********************************************27?*?Note:其中一種報文協議的簡單接口實現?28?*?author:bug菌?29?*******************************************/30void?protocol_Initial(void*?handle)31{32???protocolType1*?p?=?(?protocolType1*)handle;33????p->CommTypeName?=?"protocolType1";?//可以通過公共接口傳參訪問原對象的所有成員?3435????printf("%s?Initial\n",p->CommTypeName);36}?3738void?protocol_Send(void*?handle,char?*?buff,int?count)39{40????protocolType1*?p?=?(?protocolType1*)handle;4142????printf("%s?Send\n",p->CommTypeName);43}?4445void?protocol_Recv(void*?handle,char?*?buff)46{47????protocolType1*?p?=?(protocolType1*)handle;4849????printf("%s?Recv\n",p->CommTypeName);50}?5152void?protocol_Destory(void*?handle)53{54????protocolType1*?p?=?(protocolType1*)handle;5556????printf("%s?Destory\n",p->CommTypeName);57}?5859/********************************************60?*?Note?:?根據不同的類型,進行接口的初始化?61?*?author?:?bug菌?62?*******************************************/63void?Initial(struct?Interface?*pInterface,int?type)64{65????pInterface->Initial??=?protocol_Initial;6667????pInterface->Send?????=?protocol_Send;6869????pInterface->Recv?????=?protocol_Recv;7071????pInterface->Destory??=?protocol_Destory;7273}7475/********************************************76?*?Note?:主題框架基本上不需要修改,這里只是簡單示例,你可以更復雜?77?*?author?:?bug菌?78?*******************************************/79void?Process(struct?Interface?*pInterface)80{81????pInterface->Initial(pInterface);8283????pInterface->Send(pInterface,NULL,0);8485????pInterface->Recv(pInterface,NULL);8687????pInterface->Destory(pInterface);8889}909192/********************************************93?*?Note?:應用程序?94?*?author?:?bug菌?95?*******************************************/96int?main(int?argc,?char?*argv[])?{9798????protocolType1??protocol;99 100????Initial((struct?Interface*)&protocol,1); 101 102????Process((struct?Interface*)&protocol);? 103 104????return?0; 105}

運行結果:

分析一下:

對于一名合格的程序員,代碼show出來,本文就沒有寫下去的必要了,不過為了全文的整體性,還是啰嗦幾句。

其實面向接口編程所采用就是面向對象編程中的繼承,只不過它把所有的公共接口全部抽象出來供框架程序進行調用。

這樣當我們需要增加其他類型的對象處理時,可以通過構造并替換不同的接口函數來進行處理,從而使得整體程序改動最小。

凡是一種復用的架構都會犧牲一定的性能,不過也會增加程序的可維護性,降低程序的耦合度,如果你開發的項目并不是很復雜, 也確定了以后接口不會有新的變化,其實不使用接口也是OK的。

對于自動測試程序框架,接口的預留是非常重要的,可以通過虛擬接口來測試業務邏輯,能夠模擬更多實際環境下不同的工況來進行測試。

聲明:

本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。

總結

以上是生活随笔為你收集整理的C语言实现面向接口编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。