精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

軟件設計師:關于面向對象的一些思考

企業動態
首先我們要區分一下“基于對象”和“面向對象”的區別。

首先我們要區分一下“基于對象”和“面向對象”的區別。

基于對象,通常指的是對數據的封裝,以及提供一組方法對封裝過的數據操作。比如 C 的 IO 庫中的 FILE * 就可以看成是基于對象的。

面向對象,則在基于對象的基礎上增加了多態性。所謂多態,就是可以用統一的方法對不同的對象進行同樣的操作。當然,這些對象不能完全不同,而需要有一些共性,只有存在了這些共性才可能用同樣的方法去操作它們。我們從 C++ 通常的實現方法的角度來看,A 和 B 在繼承關系上都有共同的祖先 R ,那么我們就可以把 A 和 B 都用對待 R 的控制方法去控制它們。

為什么需要這樣做?

回到一個古老的話題:程序是什么?

程序 = 算法 + 數據結構

在計算機的世界里,數據就是一個個比特的組合;代碼的執行流程就是順序、分支、循環的程序結構的組合。用計算機解決問題,就是用程序結構的組合去重新排列數據的組合,得到結果。為了從龐大的輸入數據(從 bit 的角度上看,任何輸入數據都可能非常的龐大),通過代碼映射到結果數據。我們就必須用合理的數據結構把這些比特數據組合起來,形成數量更少的單元。

這些單元,就是對象。對象同時也包括了對它進行操作的方法。這樣,我們完成了一次封裝,就變成了:

程序 = 基于對象操作的算法 + 以對象為最小單位的數據結構

封裝總是為了減少操作粒度,數據結構上的封裝導致了數據數據的減少,自然減少了問題求解的復雜度;對代碼的封裝使得代碼得以復用,減少了代碼的體積,同樣使問題簡化。

接下來來看 基于對象操作的算法。這種算法必須將操作對象看成是同樣的東西。在沒有對象的層次上,算法操作的都是字節,是同類。但是到了對象的層次,就不一定相同了。這個時候,算法操作的是一個抽象概念的集合。

在面向對象的程序設計中,我們便少不了容器。容器就用來存放一類有共同抽象概念的東西。這里說有共同概念的東西,而沒有說對象。是因為對于算法作用于的集合,里面放的并不是對象實體,而是一個對實體的引用。這個引用表達的是,算法可以對引用的那一頭的東西做些什么,而并不要求那一頭是什么。

比如,我實現一個 GUI 系統(或是一個 3d 世界)。需要實現一個功能——判斷鼠標點選到了什么物件。這里,每個物件提供了一個方法,可以判斷當前鼠標的位置有沒有捕獲(點到)它。

這時最簡單的時候方法是:把所有可以被點選的物件都放在一個容器中,每次遍歷這個容器,查看是哪一個物件捕獲了鼠標。

我們并不需要可被點選的物件都是同類,只需要要求從容器中可以以統一方法訪問每個元素的是否捕獲住鼠標的這個判定方法。

也就是說,把對象置入容器時,只需要讓置入的東西有這一個判定方法即可。了解 COM 的同學應該明白我要說什么了。對,這就是 QueryInterface 的用途。com 的 query interface 就是說,從一個對象里取到一個特定可以做某件事情的接口。通常接下來的代碼會把它放在一個容器里,方便別處的代碼可以干這些事情。

面向對象的本質就是讓對象有多態性,把不同對象以同一特性來歸組,統一處理。至于所謂繼承、虛表、等等概念,只是實現的細節。

說到這里,再說一下 COM ,COM 允許接口繼承 ,但不允許接口多繼承。這一點是從二進制一致性上來考慮的。

為什么沒提實現繼承的事情?因為實現繼承不屬于面向對象的必要因素。而且,現在來看,實現繼承對軟件質量來說,是有負面影響的。因為如果你改寫基類的虛方法,就意味著有可能破壞基類的行為(繼承角度看,基類對象是你這個對象的一部分)。往往基類的實現早于派生類,并不能了解到派生類的需求變化。這樣,在不了解基類設計的前提下,冒然的實現繼承都是有風險的。這不利于軟件的模塊化分離和組件復用。

但是接口繼承又有什么意義呢?以我愚見,絕大多數情況下,同樣對設計沒有意義。但具體到 COM 設計本身,讓每個接口都繼承于 IUnknown 卻是有意義的。這個意義來至于基礎設施的缺乏。我指的是 GC 。在沒有 GC 的環境中,AddRef 和 Release 相當于讓每個對象自己來實現 RC (引用計數)的自動化管理。對于非虛擬機的原生代碼,考慮到 COM 不依賴具體語言,這幾乎是唯一的手段。另外 COM 還支持 apartment 的概念,甚至允許 COM 對象處于不同的機器間,這也使得 GC 實現困難。

QueryInterface 存在于每個 COM 接口中卻有那么一點格格不入。它之所以存在,是因為 COM 接口指針承擔了雙重責任,既指出了一個抽象概念,又引用了對象的實體。但從一個具體算法來看,它只需要對一組相同的抽象概念做操作即可。但它做完操作后,很可能(但不是必須)需要把對象放入另一個不同的集合中,供其它算法操作。這個時候,就需要 QueryInterface 將其轉換為另外一個接口。

但是,從概念上講,讓兩個不相關的接口相互轉換是不合邏輯的。本質上,其實在不相關的接口間轉換做的事情等價于:從一個接口中取得對對象的引用,然后調用這個對象的方法,取到新的接口。

如果去掉了 AddRef Release (依賴 GC )以及 QueryInterface (只在需要時增加一個接口獲得對象的引用),IUnknown 就什么都不剩了。那么接口繼承也完全不必存在。

回頭再來看程序語言。

C++ 提供了對面向對象的支持,但 C++ 所用的方法(虛表、繼承、多重繼承、虛繼承、等等)只是一種在 C 已有的模型上,追加的一種高效的實現方式而已。它不一定是最高效的方式(雖然很少能做到更高效),也不是最靈活的方式(可以考察 Ruby )。我想,只用 C++ 寫程序的人最容易犯的錯誤就是認為 C++ 對面向對象的支持的實現本身就是面向對象的本質。如果真的理解了面向對象,在特定需求下可以做出特定的結構來實現它。語言就已經是次要的東西了。

了解你的需求,區分我需要什么和我可以做到什么,對于設計是很重要的。好的設計在于減無可減。

你需要面向對象嗎?你需要 GC 嗎?你需要所有的類都有一個共同的基類嗎?你需要接口可以繼承嗎?你為什么需要這些?

【編輯推薦】

  1. 2011軟件設計師知識點:簡易應用規格說明技術
  2. 2011軟件設計師知識點:簡易應用規格說明技術
  3. 2011軟考軟件設計師知識點:基于工作流協同軟件
  4. 更多軟考資料請點擊51CTO軟考專題
責任編輯:張攀 來源: 網絡
相關推薦

2015-09-14 08:57:20

設計設計師

2012-06-07 10:17:55

軟件設計設計原則Java

2013-06-21 16:35:50

iOS 7設計蘋果開發iOS 7新特性

2017-12-21 07:54:07

2021-06-10 10:02:19

優化緩存性能

2021-11-23 20:41:05

對象軟件設計

2011-07-13 09:13:56

Android設計

2013-06-07 11:31:36

面向對象設計模式

2011-08-01 10:37:29

軟件項目管理

2012-12-19 09:36:49

測試自動化測試

2024-12-27 10:51:53

2020-08-20 10:16:56

Golang錯誤處理數據

2020-02-03 16:03:36

疫情思考

2009-06-25 09:50:32

JSF

2012-04-01 09:10:17

WEB設計師前端

2021-06-10 20:17:04

云網融合超融合

2015-10-12 08:59:57

異步代碼測試

2021-06-15 07:10:14

JavaScript異步編程

2021-08-08 10:44:33

安卓系統開發者手機廠商

2018-06-29 14:51:41

Java健壯性實踐
點贊
收藏

51CTO技術棧公眾號

97视频在线看| 欧美三级三级三级爽爽爽| 国产美女精品久久久| 三级黄色在线视频| 日韩一区欧美| 亚洲第一区第一页| www.com操| 丁香花在线电影小说观看| 久久久久久久久久看片| 国产精品专区第二| 中日韩精品视频在线观看| 成人在线免费观看视频| 精品国产成人在线影院 | 欧美午夜精品一区二区| 性感美女一区二区在线观看| 亚洲黄色在线视频| 色视频一区二区三区| 丰满人妻一区二区三区四区53| 久久国产精品99国产| 欧美成aaa人片在线观看蜜臀| 男女黄床上色视频| 国产精品一区二区美女视频免费看| 黑人巨大精品欧美一区二区三区| 国产精品一区在线免费观看| 国产主播福利在线| 99久久久精品免费观看国产蜜| 91精品久久久久久久久青青| 国产性生活视频| 亚洲国产精品一区制服丝袜| 欧美成人激情视频免费观看| 日本一二三不卡视频| 久久丝袜视频| 精品伦理精品一区| 一区二区三区国产好的精华液| 成人在线爆射| 午夜av一区二区| 九九久久九九久久| 国产1区在线| 国产精品理伦片| 色一情一乱一伦一区二区三欧美| 亚洲人午夜射精精品日韩| 丁香婷婷综合激情五月色| 国产专区欧美专区| 国产又粗又猛又爽又黄91| 日韩av不卡一区二区| 青草青草久热精品视频在线观看| 日韩熟女精品一区二区三区| 欧美午夜不卡| 欧美极度另类性三渗透| 青青草原在线免费观看| 亚洲精品一二三区区别| 久久在线精品视频| 粉嫩av性色av蜜臀av网站| 91精品久久久久久久蜜月| 久久精品国产99国产精品澳门 | 天堂一区二区三区四区| 亚洲精品国产精品国自产观看浪潮| 一区二区在线免费观看视频| 久久九九精品视频| 日韩女优视频免费观看| 日本人妻一区二区三区| 99久久香蕉| 亚洲高清免费观看高清完整版| 动漫美女无遮挡免费| 久草精品视频| 日韩精品中文字| 成人片黄网站色大片免费毛片| 国产精品一在线观看| 亚洲性xxxx| 精品人体无码一区二区三区| 天天射成人网| 色综合久久88| 久久狠狠高潮亚洲精品| 免费一区视频| 国产精自产拍久久久久久| 91亚洲国产成人精品一区| 国产精品自拍三区| 精品久久蜜桃| 粉嫩一区二区三区国产精品| 自拍偷自拍亚洲精品播放| 污污污污污污www网站免费| 福利网站在线观看| 91久久久免费一区二区| 久久久精品高清| 国产精品videossex| 亚洲人成电影网站色| 人人干在线观看| 精品1区2区3区4区| 国产精品第8页| 国产男男gay体育生白袜| 白白色 亚洲乱淫| 水蜜桃一区二区| 亚洲丝袜一区| 91久久国产综合久久| 男女污污视频网站| 亚洲第一二三区| 久热爱精品视频线路一| 国产成人愉拍精品久久| 久久99久久久久久久久久久| 国产精品一区二区三区不卡| 黄色大片在线看| 一区二区三区中文在线观看| av动漫在线观看| 麻豆精品一区| 在线视频免费一区二区| 欧美日韩中文视频| 久久成人免费网站| 鲁丝一区鲁丝二区鲁丝三区| 国产黄大片在线观看画质优化| 欧美色视频日本高清在线观看| 亚洲欧美一区二区三区不卡| 精品国产一级毛片| 久久久午夜视频| 国产乱子伦精品无码码专区| 91色|porny| 日韩极品视频在线观看| 久久久精品一区二区毛片免费看| 精品视频在线导航| 久久久国产精品黄毛片| 麻豆精品国产传媒mv男同| 久久综合中文色婷婷| 欧美日韩经典丝袜| 91精品国产综合久久久久久久 | 亚洲福利一区二区三区| 亚洲a级黄色片| 在线免费观看亚洲视频| 午夜伦全在线观看| 亚洲高清不卡在线| 中文字幕在线视频一区二区| 波多野结衣在线观看一区二区| 97视频免费观看| av在线资源观看| 亚洲欧洲av在线| 国产喷水theporn| 日韩dvd碟片| 国产精品福利小视频| 免费一级在线观看| 婷婷久久综合九色综合伊人色| 在线观看免费视频污| 手机亚洲手机国产手机日韩| 国产精品国产福利国产秒拍 | 中文字幕日本欧美| 欧美激情一区二区三区免费观看 | 国产成人免费在线观看视频| 麻豆精品网站| 欧美激情第六页| 亚洲性受xxx喷奶水| 精品在线观看国产| 中文字幕黄色片| 久久久久综合网| 成年人网站大全| 精品一区二区三区中文字幕老牛| 国产成人高清激情视频在线观看| 日韩福利一区二区| 91久久精品一区二区| 免费网站在线高清观看| 日韩1区2区日韩1区2区| 亚洲不卡1区| 免费观看成人性生生活片| 亚洲天堂av网| 伊人影院中文字幕| 成人免费在线视频| 美女又黄又免费的视频| 在线欧美福利| 农村寡妇一区二区三区| 成人免费福利| 久久深夜福利免费观看| 国产wwwwwww| 亚洲成av人片一区二区三区| 丰满少妇高潮一区二区| 久久精品免费观看| 亚洲乱码日产精品bd在线观看| 久久精品国产亚洲blacked| 日本精品视频在线播放| 在线免费观看黄色网址| 日韩视频一区二区在线观看| 豆国产97在线 | 亚洲| 91免费观看在线| www.com黄色片| 国模吧视频一区| 欧美另类高清视频在线| 欧美黄页在线免费观看| 欧美日韩成人网| 午夜视频免费在线| 欧美日韩美女一区二区| 久久久夜色精品| 久久综合久久综合久久| 欧美激情国内自拍| 国产农村妇女精品一二区| 日本精品一区二区三区视频| 国产一区二区三区视频在线| 欧美亚洲在线播放| 免费在线看a| 亚洲久久久久久久久久久| 亚洲综合免费视频| 精品国产电影一区| 91精品少妇一区二区三区蜜桃臀| av激情亚洲男人天堂| 欧美婷婷精品激情| 黄色免费成人| 一区精品视频| 日韩电影在线观看完整免费观看| 国产精品自拍网| 免费毛片b在线观看| 久久影视电视剧免费网站清宫辞电视| 水莓100在线视频| 日韩一区二区三区在线| 波多野结衣网站| 激情久久av一区av二区av三区| 午夜激情福利电影| 国产日韩欧美激情| 你懂的在线观看网站| 激情综合网激情| 亚洲色图38p| 国产精品三上| 久久久性生活视频| 亚洲天天影视网| 一区二区三区不卡在线| 免费国产自久久久久三四区久久| 51成人做爰www免费看网站| 一区在线影院| 国产91色在线|免| av女在线播放| 欧美老女人在线视频| 日本中文字幕电影在线免费观看| 日韩精品亚洲视频| 老牛影视av牛牛影视av| 91精品国产色综合久久ai换脸| 嫩草影院一区二区三区| 欧美性猛xxx| 日本三级一区二区| 亚瑟在线精品视频| 久久免费黄色网址| 亚洲一区二区四区蜜桃| 九九视频免费在线观看| 亚洲欧美日韩国产另类专区| 战狼4完整免费观看在线播放版| 久久久久久久久久久99999| 国产中文字幕一区二区| av毛片久久久久**hd| av黄色一级片| 91欧美激情一区二区三区成人| 中文字幕天堂av| 成人小视频在线观看| 无码国产精品久久一区免费| 国产精品一区二区在线观看不卡| 午夜一级免费视频| 激情国产一区二区| 又黄又爽又色的视频| 国产在线视频不卡二| 亚洲第一色av| 国产在线精品不卡| 欧美人与性动交α欧美精品| 国产一区二区三区黄视频| 国产一级片中文字幕| 国产在线视视频有精品| 毛片毛片毛片毛片毛| 国产suv精品一区二区三区| 97中文字幕在线观看| 91在线视频免费观看| 老鸭窝一区二区| 欧美国产精品v| 日韩国产第一页| 亚洲影视资源网| 五月婷婷亚洲综合| 欧美丝袜自拍制服另类| 国产裸体无遮挡| 精品裸体舞一区二区三区| 天天干天天做天天操| 亚洲欧美日韩精品久久奇米色影视| 国产最新视频在线| 欧美成人sm免费视频| a级大胆欧美人体大胆666| 97色在线视频观看| 成人精品高清在线视频| 亚洲a在线播放| 欧美精品密入口播放| 三区精品视频观看| 在线精品国产| 国产亚洲精品网站| 久久99国产精品尤物| 99re这里只有| 国产精品女上位| 国产午夜精品无码| 日本精品视频一区二区三区| 国产特级aaaaaa大片| 日韩精品中文在线观看| 日本中文字幕在线观看| 国内精品模特av私拍在线观看| 精品日韩视频| 视频一区二区欧美| 只有这里有精品| 99精品久久| 五月天丁香花婷婷| 91丨国产丨九色丨pron| 日韩av毛片在线观看| 亚洲成人黄色影院| 亚洲一区二区影视| 亚洲精品91美女久久久久久久| 日日夜夜精品一区| 欧美性在线视频| 国产日韩中文在线中文字幕| 欧美精品久久久| 欧美激情亚洲| 最新中文字幕免费视频| www.久久精品| 青娱乐国产在线视频| 欧美在线播放高清精品| 国产91免费看| 日韩最新中文字幕电影免费看| 蜜臀久久精品| 动漫精品视频| 久久久久av| 99草草国产熟女视频在线| 成人黄色网址在线观看| 国产少妇在线观看| 欧美三级电影在线观看| 免费a级毛片在线观看| 欧美高清视频在线观看| gogo大尺度成人免费视频| 欧美高清性xxxxhd| 国产日韩精品视频一区二区三区 | 999视频在线| 亚洲精品久久久久中文字幕二区 | www.这里只有精品| 久久精品人人做人人综合| 日本少妇bbwbbw精品| 日韩亚洲电影在线| av毛片在线| 91久久精品国产91性色| 久久福利影院| 国产又猛又黄的视频| 国产无遮挡一区二区三区毛片日本| 日本一二三区视频| 精品va天堂亚洲国产| 丁香花在线电影| 91精品国产91久久久久青草| 国产精品成人一区二区不卡| 午夜久久久精品| 亚洲国产电影在线观看| 黄色一区二区视频| 一区二区三区黄色| 粉嫩91精品久久久久久久99蜜桃| 欧美成人dvd在线视频| 亚洲综合社区| 久久久久久亚洲中文字幕无码| 欧美天天综合色影久久精品| 天天操天天干天天干| 91精品国产91| 米奇777超碰欧美日韩亚洲| 成人一级片网站| 久久精品视频免费观看| 国产精品第6页| 中文字幕亚洲欧美在线| 999精品嫩草久久久久久99| 裸体大乳女做爰69| 国产精品一品二品| 国产精彩视频在线| 日韩经典第一页| 婷婷激情一区| 杨幂一区欧美专区| 国产一区中文字幕| 久久免费视频播放| 亚洲国产97在线精品一区| 中文字幕 在线观看| 无遮挡亚洲一区| 国内不卡的二区三区中文字幕| 538任你躁在线精品视频网站| 日韩欧美国产三级| 精品丝袜在线| 香蕉久久夜色| 国产剧情在线观看一区二区| 日韩黄色a级片| 亚洲一区www| 91丨精品丨国产| 韩日视频在线观看| 国产亚洲成aⅴ人片在线观看| 91久久精品国产91性色69| 欧美日韩福利电影| 综合综合综合综合综合网| 不卡中文字幕在线观看| 亚洲电影一区二区三区| www 日韩| 成人久久18免费网站漫画| 美女黄色成人网| 东方av正在进入| 亚洲精品午夜精品| 亚洲我射av| 91精品91久久久中77777老牛| 国产精品入口麻豆原神| 蜜桃av噜噜一区二区三区麻豆| 国产98色在线| 欧美日韩综合| 丁香激情五月少妇| 精品国产网站在线观看| 男人亚洲天堂| 欧美日韩一道本| 亚洲人成影院在线观看| 国产视频在线看| 国产精品区二区三区日本|