国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

實(shí)現(xiàn)方案的隱藏

2019-11-18 13:22:55
字體:
供稿:網(wǎng)友

  為方便后面的討論,讓我們先對(duì)這一領(lǐng)域的從業(yè)人員作一下分類。從根本上說,大致有兩方面的人員涉足面向?qū)ο蟮木幊蹋骸邦悇?chuàng)建者”(創(chuàng)建新數(shù)據(jù)類型的人)以及“客戶程序員”(在自己的應(yīng)用程序中采用現(xiàn)成數(shù)據(jù)類型的人)。對(duì)客戶程序員來講,最主要的目標(biāo)就是收集一個(gè)充斥著各種類的編程“工具箱”,以便快速開發(fā)符合自己要求的應(yīng)用。而對(duì)類創(chuàng)建者來說,他們的目標(biāo)則是從頭構(gòu)建一個(gè)類,只向客戶程序員開放有必要開放的東西(接口),其他所有細(xì)節(jié)都隱藏起來。為什么要這樣做?隱藏之后,客戶程序員就不能接觸和改變那些細(xì)節(jié),所以原創(chuàng)者不用擔(dān)心自己的作品會(huì)受到非法修改,可確保它們不會(huì)對(duì)其他人造成影響。
  “接口”(Interface)規(guī)定了可對(duì)一個(gè)特定的對(duì)象發(fā)出哪些請(qǐng)求。然而,必須在某個(gè)地方存在著一些代碼,以便滿足這些請(qǐng)求。這些代碼與那些隱藏起來的數(shù)據(jù)便叫作“隱藏的實(shí)現(xiàn)”。站在程式化程序編寫(PRocedural Programming)的角度,整個(gè)問題并不顯得復(fù)雜。一種類型含有與每種可能的請(qǐng)求關(guān)聯(lián)起來的函數(shù)。一旦向?qū)ο蟀l(fā)出一個(gè)特定的請(qǐng)求,就會(huì)調(diào)用那個(gè)函數(shù)。我們通常將這個(gè)過程總結(jié)為向?qū)ο蟆鞍l(fā)送一條消息”(提出一個(gè)請(qǐng)求)。對(duì)象的職責(zé)就是決定如何對(duì)這條消息作出反應(yīng)(執(zhí)行相應(yīng)的代碼)。
  對(duì)于任何關(guān)系,重要一點(diǎn)是讓牽連到的所有成員都遵守相同的規(guī)則。創(chuàng)建一個(gè)庫(kù)時(shí),相當(dāng)于同客戶程序員建立了一種關(guān)系。對(duì)方也是程序員,但他們的目標(biāo)是組合出一個(gè)特定的應(yīng)用(程序),或者用您的庫(kù)構(gòu)建一個(gè)更大的庫(kù)。
  若任何人都能使用一個(gè)類的所有成員,那么客戶程序員可對(duì)那個(gè)類做任何事情,沒有辦法強(qiáng)制他們遵守任何約束。即便非常不愿客戶程序員直接操作類內(nèi)包含的一些成員,但倘若未進(jìn)行訪問控制,就沒有辦法阻止這一情況的發(fā)生——所有東西都會(huì)暴露無遺。
  有兩方面的原因促使我們控制對(duì)成員的訪問。第一個(gè)原因是防止程序員接觸他們不該接觸的東西——通常是內(nèi)部數(shù)據(jù)類型的設(shè)計(jì)思想。若只是為了解決特定的問題,用戶只需操作接口即可,毋需明白這些信息。我們向用戶提供的實(shí)際是一種服務(wù),因?yàn)樗麄兒茌p易就可看出哪些對(duì)自己非常重要,以及哪些可忽略不計(jì)。
  進(jìn)行訪問控制的第二個(gè)原因是答應(yīng)庫(kù)設(shè)計(jì)人員修改內(nèi)部結(jié)構(gòu),不用擔(dān)心它會(huì)對(duì)客戶程序員造成什么影響。例如,我們最開始可能設(shè)計(jì)了一個(gè)形式簡(jiǎn)單的類,以便簡(jiǎn)化開發(fā)。以后又決定進(jìn)行改寫,使其更快地運(yùn)行。若接口與實(shí)現(xiàn)方法早已隔離開,并分別受到保護(hù),就可放心做到這一點(diǎn),只要求用戶重新鏈接一下即可。
  java采用三個(gè)顯式(明確)要害字以及一個(gè)隱式(暗示)要害字來設(shè)置類邊界:public,private,protected以及暗示性的friendly。若未明確指定其他要害字,則默認(rèn)為后者。這些要害字的使用和含義都是相當(dāng)直觀的,它們決定了誰能使用后續(xù)的定義內(nèi)容?!皃ublic”(公共)意味著后續(xù)的定義任何人均可使用。而在另一方面,“private”(私有)意味著除您自己、類型的創(chuàng)建者以及那個(gè)類型的內(nèi)部函數(shù)成員,其他任何人都不能訪問后續(xù)的定義信息。private在您與客戶程序員之間豎起了一堵墻。若有人試圖訪問私有成員,就會(huì)得到一個(gè)編譯期錯(cuò)誤?!癴riendly”(友好的)涉及“包裝”或“封裝”(Package)的概念——即Java用來構(gòu)建庫(kù)的方法。若某樣?xùn)|西是“友好的”,意味著它只能在這個(gè)包裝的范圍內(nèi)使用(所以這一訪問級(jí)別有時(shí)也叫作“包裝訪問”)?!皃rotected”(受保護(hù)的)與“private”相似,只是一個(gè)繼續(xù)的類可訪問受保護(hù)的成員,但不能訪問私有成員。繼續(xù)的問題不久就要談到。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳江市| 金川县| 泾川县| 勐海县| 额尔古纳市| 海南省| 安多县| 赤峰市| 准格尔旗| 鹤山市| 合江县| 囊谦县| 安平县| 东乌珠穆沁旗| 莱阳市| 苍山县| 湖口县| 房山区| 康乐县| 潢川县| 洮南市| 米易县| 张家口市| 新津县| 嵩明县| 鄂托克前旗| 黎城县| 阿拉尔市| 高邑县| 廊坊市| 灵丘县| 个旧市| 洛南县| 平乐县| 衡山县| 东乌珠穆沁旗| 永年县| 繁峙县| 兰考县| 山丹县| 长宁区|