久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

為什么面向對象糟透了?

2021-02-13    分類: 網站建設

編程語言“三巨頭”Java, Lisp 和C語言在Hello World咖啡館聚會。
服務員送來咖啡的同時還帶來了一張今天的報紙, 三人寒暄了幾句, C語言翻開了報紙,突然眼前一亮:“這篇文章的標題寫得好啊, 《為什么面向對象糟透了!》”
Java 大吃一驚,居然有人這么罵面向對象?!
他趕緊搶過來,看了一會兒,說到:“雖然我對去世的Joe Armstrong老先生非常尊敬,但是我對他的觀點卻不敢茍同,你看他說'數據結構和函數不應該綁到一起!'”
C語言說:“他說得很有道理啊,函數是實現算法的,就像一個黑盒子,只要理解了它的輸入和輸出,就理解了它的功能,而數據結構呢就是單純的‘聲明’,為什么要把他們綁在一起呢?”
“不不不,還是綁在一起好!我給你舉個例子,一個棧,如果你把它當成一個完整的對象,那用起來就方便多了?!?
C語言不甘示弱:“把數據結構和函數分開也挺好??!比如我可以創建一個叫做Stack的數據結構,然后寫幾個對這個數據結構操作的函數?!?
Java不屑一顧地說:“你看看你這種方式多丑陋啊。”
C語言寸步不讓:“本質都是一樣的,你是o.f() ,我是f(o), 有啥區別?”
Lisp也插了一嘴:“還有我的(f o) ”
Java無語,心說這兩個家伙就是胡攪蠻纏。突然,他心中一動:我怎么忘記多態了。
Java說:“本質是不一樣的,你要知道,o.f()是可以產生多態行為的,這就帶來了巨大的好處,我給你舉個例子,你有一段業務邏輯,需要把計算的結果記錄到文件中,將來還可能會記錄別的地方,你的設計可能是這樣的?!?
為什么面向對象糟透了?
C語言:“難道不應該如此嗎?一個函數調用另外一個函數?”
Java 說到:“這里有個依賴的問題,就是businesslogic()不但運行期依賴writeToFile(), 在源碼級或者編譯期也會依賴。”
C語言:“這不是很正常嘛!”
Java又說道:“不一樣, 寫入文件是底層的實現細節,不是高層策略,假如用戶不想把計算的結果保存到文件中了,而是想通過郵件發送,那你的businesslogic也得修改了,對不對?”
為什么面向對象糟透了?
C語言:“那肯定??!函數調用嘛,一個改了,另外一個也得改?!?
“這就是問題了, 編譯期/源代碼的依賴導致我們沒法把系統劃分成獨立的組件,各自獨立開發,獨立部署,一個的變化就影響到了另外一個?!?
C語言覺得有一定的道理,他說:“那怎么辦?”
Java說:“你看看我使用多態以后的設計,我的業務邏輯在編譯時只依賴那個接口Writer,而不依賴具體的實現FileWriter和MailWriter?!?
為什么面向對象糟透了?
“你的意思是只要接口Writer不變化,底層的具體實現如FileWriter ,MailWriter可以隨意變化,隨意替換,就像插件一樣,對吧?” C語言說到。
“對啊,編譯期/源代碼不依賴,運行期依賴,這就是延遲綁定帶來的好處,現在你明白o.f()和 f(o)的本質區別了吧。 ”
Lisp 不失時機又插了一嘴:“你那接口中只有一個函數,就是write(),用什么接口啊,脫褲子放屁,多此一舉,在我這兒只要把不同的函數傳遞過去就可以了?!?
Java笑道:“別抬杠,這就是個簡單的例子,不管是用接口,還是傳遞函數,都是延遲綁定嘛, 關鍵點都是要找到那個穩定的東西(Writer),就是抽象。你找不到這個穩定的東西,做不出抽象,你的系統就沒法劃分成可以獨立開發,獨立變化的組件了。”
C語言還想反擊,但一直找不到突破口。
Lisp說道:“別聽Java在哪里忽悠,C老弟,你也能實現運行期的延遲綁定,這不是Java的專利,你忘了虛函數表了?”
C語言一拍大腿:“是啊,我忘了那一年春節回家,Linus 大神曾經告訴我,虛函數表和函數指針才是實現多態的關鍵,比如Unix/Linux把設備都當成了文件,有標準的open , read 等方法,對于不同的設備,都能調用對應的方法, 那是怎么實現的?也是通過虛函數表做延遲綁定嘛!”
(碼農翻身老劉注:C語言實現面向對象的詳情可以移步《
C語言高興了:“哈哈,Java 老弟,看來我們本質上還是一樣的,多態只不過是函數指針的一種應用!”
Java說:“所以編程的關鍵不在于是否使用了面向對象的語言,這一點你同意吧?”
C語言點頭,編程的關鍵點就是找到、抽象出穩定的接口,針對這個接口編程,這樣就可以讓各個模塊能夠獨立地變化。
“說起來容易,做起來難,這兒有一個例子,你給我用面向對象設計一下?” Lisp 拋出了一道題。
動物可以分為肉食動物,草食動物,水生動物,陸生動物,用類如何表示?
Java 說:這還不簡單,看看這名詞多明顯啊,都可以變成類啊,讓他們都繼承動物就可以了。
為什么面向對象糟透了?
Lisp看到Java 掉入了陷阱,狡黠地一笑:“那有的動物就既是陸生動物,又是肉食動物,怎么表達?”
“那我就加一個陸生肉食動物類?!?雖然覺得不妥,Java還是說了出來。
為什么面向對象糟透了?
“那要是再來一個水生肉食動物怎么辦?或者來了一個新的概念‘哺乳動物’, 該怎么處理?”
“哈哈哈,我懂了,隨著需求的增多,不但類會出現爆炸, 還可能會出現那種怪異的類,這面向對象編程確實是有大問題??!” C語言說。
Java 低頭沉思不語,突然,腦海中想起來了那句話:優先使用組合而不是繼承。
怎么使用組合?必須得改變下看待問題的方式,對,應該這樣:
為什么面向對象糟透了?
Java得意地說:“看看這個圖, 動物具備多個特性,如'進食', '移動',將來還可以加上'哺乳方式',每個特性都是一個接口,接口是穩定的, 動物這個概念是可以通過這些接口特性給組合起來的。”
Lisp 贊賞地點頭, C語言向Java投去了欽佩的目光,這家伙經常做面向對象的設計,還是有兩把刷子的,他通過特性的方式把變化給隔離了, 各個特性可以通過組合的方式,像插件一樣隨意替換, 嗯,這才是面向對象的真正精髓啊。
夜已深, 最后Java做了個總結,大伙散去。
“編程嘛就是發現變化,并且把它給隔離起來,使用各種語言都可以,面向對象的語言有著直接使用多態的便利,以后不要隨隨便便就diss它了?!?

網站欄目:為什么面向對象糟透了?
本文URL:http://www.js-pz168.com/news3/100803.html

成都網站建設公司_創新互聯,為您提供動態網站、網頁設計公司、微信小程序、定制開發網站設計電子商務

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
国产精品福利av| 成人污污视频在线观看| 不卡一区二区在线| 99电影网电视剧在线观看| 欧美日韩另类综合| 天天爽天天狠久久久| 91精品国产品国语在线不卡| 中文字幕av一区二区三区| 午夜欧美视频在线观看| 成人毛片老司机大片| 欧美一区二区三区四区五区六区| 欧美麻豆精品久久久久久| 国产精品国产三级国产三级人妇| 蜜臀av一区二区| 波多野结衣成人在线| 色偷偷成人一区二区三区91| 久久色.com| 日日摸夜夜添夜夜添国产精品| 亚洲视频一区二区在线| 亚洲二区在线视频| www.成人网.com| 永久免费精品视频网站| 久久久国产综合精品女国产盗摄| 婷婷一区二区三区| 91免费版网站在线观看| 91福利在线播放| 国产精品视频一区二区三区不卡| 久久电影网站中文字幕| 黑人另类av| 欧美一级在线观看| 亚洲va天堂va国产va久| 91国产丝袜在线放| 欧美亚洲禁片免费| 亚洲欧美综合色| 国产成人精品一区二区三区四区| 日本一区视频在线观看免费| 精品久久一二三区| 日本麻豆一区二区三区视频| 精品国产一区二区三区四区精华 | 国产成人精品免费网站| 日韩精品电影网站| 久久午夜色播影院免费高清| 热久久国产精品| 久久99精品久久久久久三级 | 国产精品一区免费视频| 日韩一区二区三区资源| 国产日韩精品一区二区浪潮av| 久久国产精品无码网站| 日韩高清av| 国产欧美日韩另类一区| 国产精品一线二线三线| 一区二区国产日产| 中文字幕一区在线| 99久久免费精品| 欧美日韩免费观看一区三区| 亚洲综合激情另类小说区| 高清免费日韩| 精品美女在线观看| 国产综合色产在线精品| 杨幂一区欧美专区| 亚洲视频一区二区在线观看| 91在线视频免费91| 7777精品伊人久久久大香线蕉完整版| 午夜在线成人av| 久久精品一区二区三区不卡免费视频| 精品国产一区二区在线观看| 精品一区二区在线看| 正在播放亚洲| 一区二区三区四区国产精品| 国产综合动作在线观看| 26uuu久久天堂性欧美| 国产乱子伦视频一区二区三区| 日本韩国一区二区| 亚洲地区一二三色| 欧美精品与人动性物交免费看| 国产日韩欧美不卡在线| 成人av在线播放网站| 69精品人人人人| 极品尤物av久久免费看| 色国产综合视频| 亚瑟在线精品视频| 日本在线观看一区二区三区| 综合久久给合久久狠狠狠97色 | 欧美精品一区二区三区视频| 国产成人综合精品三级| 欧美日韩高清不卡| 久久精品国产一区二区三区免费看| 亚洲午夜精品久久| 亚洲国产日韩在线一区模特| 欧美日韩精品免费在线观看视频| 日韩一区在线播放| 国产中文一区二区| 一区在线观看免费| 精品日韩电影| 亚洲色欲色欲www在线观看| 国产精品免费一区二区三区四区| 国产视频一区不卡| 97自拍视频| 日本一区二区综合亚洲| 91在线精品观看| 国产视频911| 国产高清精品一区二区| 欧美高清在线一区二区| 国产精品播放| 国产精品久久久久三级| 九9re精品视频在线观看re6| 中文字幕一区二区三区四区不卡| 含羞草久久爱69一区| 《视频一区视频二区| 精品一区久久久| 亚洲色图都市小说| 日本一区二区精品| 亚洲电影欧美电影有声小说| 亚洲国产精品日韩| 日韩精品一区第一页| 在线视频一区二区三| 狠狠色丁香婷婷综合| 日韩一区二区三区四区| 成人激情校园春色| 久久久久国色av免费看影院| 国产91精品一区二区绿帽| 日韩美女视频一区二区 | 亚洲人成亚洲人成在线观看图片| 欧美日韩精品中文字幕一区二区| 亚洲国产一二三| 色琪琪一区二区三区亚洲区| 精品影视av免费| 日韩欧美一卡二卡| 99国产盗摄| 日韩理论电影院| 视频一区视频二区视频三区高| 日韩av在线免费观看不卡| 欧美日韩国产在线播放网站| 粉嫩av一区二区三区| 国产日韩欧美一区二区三区综合| 好看的日韩精品| 亚洲成在人线免费| 欧美性三三影院| 成人综合婷婷国产精品久久| 国产亚洲一区字幕| 欧美激情www| 秋霞av亚洲一区二区三| 欧美一区二区免费视频| 豆国产97在线| 亚洲国产精品一区二区久久| 欧美特级限制片免费在线观看| 大陆成人av片| 国产精品乱人伦| 一区二区三区四区国产| 国产一二精品视频| 国产欧美日韩三级| 视频一区二区三| 国产一区二区免费在线| 国产三级久久久| 日本免费高清不卡| 国内外精品视频| 国产午夜精品福利| 亚洲国产一区二区三区在线| 国产在线精品不卡| 国产欧美精品一区| 亚洲欧洲日韩精品| 粉嫩蜜臀av国产精品网站| 日韩美女视频一区| 在线视频国产一区| 91亚洲精品乱码久久久久久蜜桃| 亚洲伦在线观看| 欧美男生操女生| 懂色中文一区二区三区在线视频| 亚洲 欧美综合在线网络| 日韩一区二区免费在线电影| 久久精品五月婷婷| 精品一区二区三区av| 欧美韩日一区二区三区四区| 亚洲制服欧美久久| 成人av综合一区| 亚洲在线成人精品| 日韩精品一区二区三区四区| 欧洲精品在线一区| 国产精品一区二区x88av| 亚洲天堂网中文字| 欧美日韩1234| 久久精品成人一区二区三区蜜臀| 久久99久久精品| 国产精品你懂的在线| 欧美亚洲高清一区| 国产区一区二区三区| 麻豆国产精品777777在线| 欧美国产视频在线| 欧美天堂亚洲电影院在线播放| 国产精品久久亚洲| 韩国av一区二区三区| 亚洲女厕所小便bbb| 欧美一区二区三区不卡| 日韩中文字幕一区| av资源网一区| 日本成人在线看| 国产精品蜜臀在线观看| 欧美日韩国产综合一区二区三区 | 成人激情免费网站| 亚洲18色成人|