C語言對(duì)象編程構(gòu)思
其實(shí)C語言誕生以來,人們就想了很多辦法來體現(xiàn)“面向?qū)ο?rdquo;的思想。下面就來說說我所知道的方法。
有的人不禁要問,宏定義怎么扯到這里來了,我們可以先看一個(gè)簡(jiǎn)單的例子:
- #define MacroFunction Afunction
然后在程序里面你調(diào)用了大量的AFunction,但是有一天,你突然發(fā)現(xiàn)你要用BFunction了,(不過AFunction又不能不要,很有可能你以后還要調(diào)用),這個(gè)時(shí)候,你就可以#define MacroFunction Bfunction來達(dá)到這樣的目的。
當(dāng)然,不得不說這樣的辦法是too simple,sometime na?ve的,因?yàn)橐粋€(gè)很滑稽的問題是如果我一般要改為BFunction,一半不變?cè)趺崔k? 那就只好查找替換了。
靜態(tài)的入口函數(shù),保證函數(shù)名相同,利用標(biāo)志位調(diào)用子函數(shù):
這樣的典型應(yīng)用很多,比如說網(wǎng)卡驅(qū)動(dòng)里面有一個(gè)入口函數(shù)Nilan(int FunctionCode,Para*)。具體的參數(shù)是什么記不清楚了。保證相同的函數(shù)名就是說:網(wǎng)卡驅(qū)動(dòng)是和pNA+協(xié)議?;ミB的,那么如何保證pNA+協(xié)議棧和不同的驅(qū)動(dòng)都兼容呢,一個(gè)簡(jiǎn)單的辦法就是僅僅使用一個(gè)入口函數(shù)。
通過改變?nèi)绻瘮?shù)的參數(shù)值,來調(diào)用內(nèi)部的各個(gè)函數(shù)。這樣的做法是可以進(jìn)化的:如果以后想調(diào)用新的函數(shù),增加相應(yīng)的函數(shù)參數(shù)值就好了。如果我們將網(wǎng)卡驅(qū)動(dòng)和pNA+協(xié)議??醋鲀蓚€(gè)層的話,我們可以發(fā)現(xiàn):
層與層之間的互連接口是很小的(這里是一個(gè)入口函數(shù)),一般是采用名字解析的辦法而不是具體的函數(shù)調(diào)用(利用FunctionCode調(diào)用函數(shù),Nilan僅僅實(shí)現(xiàn)名字解析的功能)――!接口限制和名字解析
接口限制:層與層之間僅僅知道有限的函數(shù)
名字解析:層與層之間建立共同的名字與函數(shù)的對(duì)應(yīng)關(guān)系,之間利用名字調(diào)用功能。 面向?qū)ο蟮睦砟钍亲园l(fā)的,源自天然的。所以面向?qū)ο蠹夹g(shù)被設(shè)計(jì)得最遵循思維的自然方式。也就是說,用到的符號(hào),術(shù)語,定義和每個(gè)人都相關(guān)。基于面向?qū)ο蟮姆治龊驮O(shè)計(jì)技術(shù)的這些特點(diǎn),客戶可以從始至終參與到系統(tǒng)的分析中去,參與到系統(tǒng)的設(shè)計(jì)。由于在討論對(duì)象之間的交互作用時(shí),大家使用同樣的術(shù)語概念??蛻暨€可以參與文檔的創(chuàng)建和編寫,因?yàn)樗鞔_已有對(duì)象的含義。這樣分析出來的設(shè)計(jì)絕對(duì)是符合需求易于客戶使用及管理的。
另外加上面向?qū)ο蠹夹g(shù)方面的繼承等技術(shù),使得應(yīng)用系統(tǒng)的的升級(jí)變的輕松。當(dāng)今計(jì)算機(jī)硬件的飛速發(fā)展使得由于使用面向?qū)ο蠹夹g(shù)帶來的速度效率問題變得越來越?jīng)]那么重要了,而各個(gè)行業(yè)對(duì)于計(jì)算機(jī)的使用使得軟件越來越復(fù)雜,清晰的分析和設(shè)計(jì)條理變成了更主要的問題,而面向?qū)ο笫欠浅_m合解決這個(gè)問題的。
(1)系統(tǒng)分層在數(shù)據(jù)庫和客戶端加入一個(gè)中間層,在這一層添加業(yè)務(wù)層和數(shù)據(jù)訪問層,數(shù)據(jù)訪問層與數(shù)據(jù)庫交互為業(yè)務(wù)層提供數(shù)據(jù)服務(wù)。業(yè)務(wù)層為客戶層提供經(jīng)過分析及過濾篩選之后的對(duì)象及對(duì)象集合。
面向?qū)ο蟮睦砟钍亲园l(fā)的,源自天然的。所以面向?qū)ο蠹夹g(shù)被設(shè)計(jì)得最遵循思維的自然方式。也就是說,用到的符號(hào),術(shù)語,定義和每個(gè)人都相關(guān)。基于面向?qū)ο蟮姆治龊驮O(shè)計(jì)技術(shù)的這些特點(diǎn),客戶可以從始至終參與到系統(tǒng)的分析中去,參與到系統(tǒng)的設(shè)計(jì)。由于在討論對(duì)象之間的交互作用時(shí),大家使用同樣的術(shù)語概念??蛻暨€可以參與文檔的創(chuàng)建和編寫,因?yàn)樗鞔_已有對(duì)象的含義。這樣分析出來的設(shè)計(jì)絕對(duì)是符合需求易于客戶使用及管理的。
另外加上面向?qū)ο蠹夹g(shù)方面的繼承等技術(shù),使得應(yīng)用系統(tǒng)的的升級(jí)變的輕松。當(dāng)今計(jì)算機(jī)硬件的飛速發(fā)展使得由于使用面向?qū)ο蠹夹g(shù)帶來的速度效率問題變得越來越?jīng)]那么重要了,而各個(gè)行業(yè)對(duì)于計(jì)算機(jī)的使用使得軟件越來越復(fù)雜,清晰的分析和設(shè)計(jì)條理變成了更主要的問題,而面向?qū)ο笫欠浅_m合解決這個(gè)問題的。
【編輯推薦】
- 51CTO:技術(shù)人也看世界杯——每日球評(píng)
- 生命何其輕 技術(shù)人員當(dāng)注重心理健康
- 信息技術(shù)人才成長的一般規(guī)律和特殊規(guī)律
- 章文嵩:攜手技術(shù)人才 打造低碳淘寶
- 噩耗:搜狐無線事業(yè)部一技術(shù)人員猝死