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

為什么面向對象糟透了?

開發 開發工具
又是周末,編程語言“三巨頭”Java, Lisp 和C語言在Hello World咖啡館聚會。

 又是周末,編程語言“三巨頭”Java, Lisp 和C語言在Hello World咖啡館聚會。

[[277696]]

服務員送來咖啡的同時還帶來了一張今天的報紙, 三人寒暄了幾句, C語言翻開了報紙,突然眼前一亮:“這篇文章的標題寫得好啊, 《為什么面向對象糟透了!》”

(這是一篇很早之前的文章,作者是大名鼎鼎的Joe Armstrong , 也就是Erlang之父。)

Java 大吃一驚,居然有人這么罵面向對象?!

他趕緊搶過來,看了一會兒,說到:“雖然我對去世的Joe Armstrong老先生非常尊敬,但是我對他的觀點卻不敢茍同,你看他說'數據結構和函數不應該綁到一起!'”

C語言說:“他說得很有道理啊,函數是實現算法的,就像一個黑盒子,只要理解了它的輸入和輸出,就理解了它的功能,而數據結構呢就是單純的‘聲明’,為什么要把他們綁在一起呢?”

“不不不,還是綁在一起好!我給你舉個例子,一個棧,如果你把它當成一個完整的對象,那用起來就方便多了。”

  1. Stack s = new Stack(); 
  2. s.push(100); 
  3. s.push(200); 
  4. s.pop(); 

C語言不甘示弱:“把數據結構和函數分開也挺好啊!比如我可以創建一個叫做Stack的數據結構,然后寫幾個對這個數據結構操作的函數。”

  1. push(stack, 100); 
  2. push(stack, 200); 
  3. pop(stack); 

Java不屑一顧地說:“你看看你這種方式多丑陋啊。”

C語言寸步不讓:“本質都是一樣的,你是o.f() ,我是f(o), 有啥區別?”

Lisp也插了一嘴:“還有我的(f o) ”

2

Java無語,心說這兩個家伙就是胡攪蠻纏。突然,他心中一動:我怎么忘記多態了。

Java說:“本質是不一樣的,你要知道,o.f()是可以產生多態行為的,這就帶來了巨大的好處,我給你舉個例子,你有一段業務邏輯,需要把計算的結果記錄到文件中,將來還可能會記錄別的地方,你的設計可能是這樣的。”

[[277698]]

 

C語言:“難道不應該如此嗎?一個函數調用另外一個函數?”

Java 說到:“這里有個依賴的問題,就是businessLogic()不但運行期依賴writeToFile(), 在源碼級或者編譯期也會依賴。”

C語言:“這不是很正常嘛!”

Java又說道:“不一樣, 寫入文件是底層的實現細節,不是高層策略,假如用戶不想把計算的結果保存到文件中了,而是想通過郵件發送,那你的businessLogic也得修改了,對不對?”

[[277698]]

 

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語言高興了:“哈哈,Java 老弟,看來我們本質上還是一樣的,多態只不過是函數指針的一種應用!”

Java說:“所以編程的關鍵不在于是否使用了面向對象的語言,這一點你同意吧?”

C語言點頭,編程的關鍵點就是找到、抽象出穩定的接口,針對這個接口編程,這樣就可以讓各個模塊能夠獨立地變化。

3

“說起來容易,做起來難,這兒有一個例子,你給我用面向對象設計一下?” Lisp 拋出了一道題。

動物可以分為肉食動物,草食動物,水生動物,陸生動物,用類如何表示?

Java 說:這還不簡單,看看這名詞多明顯啊,都可以變成類啊,讓他們都繼承動物就可以了。

 

Lisp看到Java 掉入了陷阱,狡黠地一笑:“那有的動物就既是陸生動物,又是肉食動物,怎么表達?”

“那我就加一個陸生肉食動物類。” 雖然覺得不妥,Java還是說了出來。

 

“那要是再來一個水生肉食動物怎么辦?或者來了一個新的概念‘哺乳動物’, 該怎么處理?”

“哈哈哈,我懂了,隨著需求的增多,不但類會出現爆炸, 還可能會出現那種怪異的類,這面向對象編程確實是有大問題啊!” C語言說。

Java 低頭沉思不語,突然,腦海中想起來了那句話:優先使用組合而不是繼承。

怎么使用組合?必須得改變下看待問題的方式,對,應該這樣:

 

 

[[277698]]

 

 

Java得意地說:“看看這個圖, 動物具備多個特性,如'進食', '移動',將來還可以加上'哺乳方式',每個特性都是一個接口,接口是穩定的, 動物這個概念是可以通過這些接口特性給組合起來的。”

Lisp 贊賞地點頭, C語言向Java投去了欽佩的目光,這家伙經常做面向對象的設計,還是有兩把刷子的,他通過特性的方式把變化給隔離了, 各個特性可以通過組合的方式,像插件一樣隨意替換, 嗯,這才是面向對象的真正精髓啊。

夜已深, 最后Java做了個總結,大伙散去。

“編程嘛就是發現變化,并且把它給隔離起來,使用各種語言都可以,面向對象的語言有著直接使用多態的便利,以后不要隨隨便便就diss它了。”

參考資料:

http://www.cs.otago.ac.nz/staffpriv/ok/Joe-Hates-OO.htm

《敏捷軟件開發:原則,模式與實踐》

《架構整潔之道》

《面向對象開發參考手冊》

【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】

 

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2023-01-10 09:38:09

面向對象系統

2013-11-26 10:14:15

面向對象函數式

2011-07-05 16:15:49

面向對象

2025-10-18 20:43:14

2020-08-03 07:50:56

存儲對象存儲

2014-12-17 09:57:39

2019-11-11 10:48:44

面向對象語言

2013-03-11 09:23:22

Go語言面向對象

2015-02-11 10:22:25

對象存儲云共享S3存儲

2022-07-30 23:41:53

面向過程面向對象面向協議編程

2013-08-21 17:20:49

.NET面向對象

2013-04-17 10:46:54

面向對象

2017-04-21 09:07:39

JavaScript對象編程

2012-01-17 09:34:52

JavaScript

2020-08-02 22:54:04

Python編程語言開發

2025-02-24 16:00:00

JavaScripMap開發

2020-05-29 10:17:00

代碼擴展設計

2010-07-15 13:56:24

面向對象面向過程

2012-12-13 11:01:42

IBMdW

2009-06-26 13:29:11

面向對象
點贊
收藏

51CTO技術棧公眾號

51久久夜色精品国产麻豆| 91麻豆免费看| 午夜精品三级视频福利| 欧美bbbbb性bbbbb视频| 电影在线观看一区二区| 亚洲精品五月天| 精品日韩电影| 亚洲一区二区激情| 在线精品福利| 中文字幕9999| 色综合久久五月| 久久99国产精品二区高清软件| 一区二区三区免费在线观看| 明星裸体视频一区二区| 国产一区二区三区视频免费观看 | 黄色免费高清视频| 香蕉视频成人在线| 国产一区二区三区在线观看精品| 欧美一级视频在线观看| 亚洲欧美精品aaaaaa片| 自拍偷拍精品| 精品国产凹凸成av人网站| 一级在线免费视频| 色多多在线观看| 亚洲精品国产精华液| 神马影院我不卡午夜| 手机在线精品视频| 国产福利一区二区三区视频在线| 国产激情视频一区| 日韩欧美激情视频| 欧美日韩国产高清| 久久九九国产精品怡红院 | 亚洲图片久久| 日韩欧美的一区二区| 中文av一区二区三区| 在线毛片观看| 精品久久久久久久久国产字幕 | 国产ts在线播放| 欧美综合自拍| 亚洲第一视频在线观看| 永久免费看片在线观看| 日韩亚洲国产免费| 欧美日韩欧美一区二区| 日韩一级片播放| 欧美日韩视频网站| 色综合久久天天| 波多野结衣家庭教师视频| 91超碰在线免费| 亚洲线精品一区二区三区| 97精品国产97久久久久久粉红| 在线免费观看黄| 中文子幕无线码一区tr| 欧美一区二区在线| 久久久久久久影视| 久久九九全国免费| 日本高清视频一区二区三区| 男男电影完整版在线观看| 久久一留热品黄| 欧美精品欧美精品系列c| 日韩国产福利| 国产午夜久久久久| 亚洲欧洲日韩精品| 国产丝袜在线| 一区二区三区日本| 国产精品www在线观看| a在线视频v视频| 精品久久久久久久久久久| av片中文字幕| 免费在线成人激情电影| 欧美军同video69gay| 四虎1515hh.com| 99久久香蕉| 日韩精品视频在线免费观看| free性中国hd国语露脸| 国产精品探花在线观看| 中文字幕日韩av电影| 成人免费视频网站入口::| 亚洲一本视频| 国产91精品最新在线播放| 在线观看av大片| 国产精品夜夜爽| 久久福利电影| av在线三区| 一区二区三区在线视频播放 | 欧美大片xxxx| 极品少妇一区二区三区| 国产91在线播放精品91| 国产一区二区在线不卡| 成人av在线影院| 日韩av在线一区二区三区| 麻豆传媒视频在线观看免费| 亚洲午夜免费视频| 噼里啪啦国语在线观看免费版高清版| 欧美激情福利| 亚洲精品国产精品乱码不99按摩| 国产jk精品白丝av在线观看| 一级欧洲+日本+国产| 性亚洲最疯狂xxxx高清| 亚洲天堂aaa| 99久久久久久99| 先锋影音日韩| 国产精品13p| 欧美日韩国产区一| 色噜噜在线观看| 中文字幕日韩一区二区不卡| 欧美一区视频在线| 精品黑人一区二区三区国语馆| 91污片在线观看| 久久视频免费在线| 欧美日韩五码| 亚洲成人动漫在线播放| 亚洲精品自拍视频在线观看| 国产偷自视频区视频一区二区| 成人福利视频网| 国产视频三级在线观看播放| 亚洲va欧美va天堂v国产综合| 超碰在线97免费| 欧美午夜18电影| 欧美日韩国产二区| 91中文字幕在线播放| 久久一区二区视频| 91国视频在线| 国产精品任我爽爆在线播放| 久久在线视频在线| 中文字幕丰满人伦在线| 久久在线观看免费| 大伊香蕉精品视频在线| 狂野欧美xxxx韩国少妇| 日韩有码视频在线| 一区二区乱子伦在线播放| 久久亚洲精精品中文字幕早川悠里| 日韩欧美猛交xxxxx无码| 亚洲高清国产拍精品26u| 一个色综合导航| 91丝袜一区二区三区| 成人国产亚洲欧美成人综合网| 艳母动漫在线免费观看| 成人做爰视频www| 在线精品视频视频中文字幕| 黄色片视频免费| 91麻豆国产福利在线观看| 人妻av无码专区| 999久久久国产999久久久| 最近2019中文字幕大全第二页| 亚洲成人第一网站| www国产亚洲精品久久麻豆| 奇米影视亚洲色图| 国产另类在线| 午夜精品久久久99热福利| 日本精品999| 亚洲一区二区在线观看视频| 亚洲成人福利视频| 亚洲国产第一| 久久99精品久久久久久三级| 在线观看的黄色| 亚洲激情社区| 天天做天天摸天天爽国产一区| 天天操天天爽天天射| 欧美男同视频网| 国产精品成人播放| 97在线观看免费观看高清| 欧美视频一区在线观看| 精品视频第一页| 久久er精品视频| 91精品一区二区三区四区| 日韩欧洲国产| 亚洲**2019国产| 日韩av视屏| 欧美性猛交xxxxxxxx| 精品伦精品一区二区三区视频密桃 | 毛片视频网站在线观看| 91麻豆国产福利在线观看| 国产真人无码作爱视频免费| 色综合久久网| 懂色av一区二区三区在线播放| 国产香蕉视频在线看| 欧美精品久久久久久久久老牛影院| 欧美丰满熟妇bbbbbb| 粉嫩av亚洲一区二区图片| 日日摸日日碰夜夜爽无码| 国产成人三级| 成人写真福利网| 678在线观看视频| 亚洲人精品午夜在线观看| 夜夜狠狠擅视频| 亚洲成人免费观看| 欧美人与性囗牲恔配| 精品一区二区三区免费观看| 日韩美女爱爱视频| 国产欧美久久一区二区三区| 91色在线视频| 成人免费影院| 久久这里有精品| 日本私人网站在线观看| 欧美日本在线一区| 国产一级特黄a高潮片| 国产欧美日韩精品一区| 美女又黄又免费的视频| 欧美亚洲在线| 国产精品久久久久久久久电影网| 伊人久久大香线蕉无限次| 亚洲va欧美va国产综合剧情| 秋霞伦理一区| 欧美成年人网站| 青青草手机在线| 欧美成人猛片aaaaaaa| 成人黄色片在线观看| 亚洲成人777| 登山的目的在线| 久久午夜老司机| 99免费观看视频| 欧美96一区二区免费视频| 日韩小视频在线播放| 亚洲一区二区三区| 日本精品一区二区三区视频| 91亚洲无吗| 国产欧美日韩中文字幕在线| 小早川怜子影音先锋在线观看| 色综合视频网站| 日本免费在线观看| 亚洲少妇激情视频| 色婷婷中文字幕| 日韩欧美色综合| 91资源在线视频| 欧美四级电影在线观看| 国产精品21p| 亚洲成人在线网站| 久久伊人成人网| 亚洲欧洲成人精品av97| 夫妇露脸对白88av| 久久久精品日韩欧美| 污污污www精品国产网站| 国产乱一区二区| 伊人五月天婷婷| 久久电影网电视剧免费观看| 99视频在线免费| 日韩福利电影在线| 国产视频在线视频| 丝袜亚洲另类丝袜在线| 日本精品一区二区三区四区| 国产欧美大片| 欧美日韩精品在线一区二区| 国产专区一区| 国产精品第157页| 欧美日本中文| 欧洲xxxxx| 欧美特黄视频| 国产毛片久久久久久国产毛片| 欧美午夜电影在线观看 | 国产在线一区二区三区欧美| 88久久精品| 国产精品久久久久久久小唯西川| 久久69av| 国产精品麻豆免费版| 风间由美中文字幕在线看视频国产欧美| 97人人澡人人爽| 欧美日韩国产一区二区在线观看| 91视频国产一区| 久久国产精品美女| 99精品欧美一区二区三区| 日韩在线成人| 国产精品国产三级欧美二区 | 日韩av网站在线| 亚洲色欧美另类| 亚洲欧美一区二区精品久久久| 欧美日韩影视| 最近免费中文字幕视频2019| 免费观看久久久久| 欧美片一区二区三区| brazzers在线观看| 日本成人精品在线| 日韩精品一级毛片在线播放| 91久久嫩草影院一区二区| 亚洲一区二区免费在线观看| 国产伦精品一区二区三区| 深夜福利久久| 午夜啪啪免费视频| 国内精品美女在线观看| 国产亚洲综合视频| 麻豆成人久久精品二区三区红| 亚洲综合123| 不卡的av电影在线观看| 国产视频三区四区| 亚洲精品一二三| 日本高清不卡码| 91精品国产综合久久久久久| 天堂在线视频观看| 永久555www成人免费| 午夜av在线免费观看| 欧美专区中文字幕| 91成人福利社区| 久久久久成人精品免费播放动漫| 欧美偷拍自拍| 成年人看的毛片| 免费观看在线综合| v天堂中文在线| 日韩一区欧美一区| 国产三级av片| 欧美一卡在线观看| 国产免费av在线| 欧美黑人xxxx| 日韩深夜福利网站| 久久av免费观看| 你懂的成人av| 成人亚洲视频在线观看| 成人午夜激情在线| 在线观看天堂av| 欧美性猛交xxxx乱大交蜜桃| 国产色在线视频| 亚洲图片制服诱惑| 17videosex性欧美| 91久久久久久久久久久久久| 久久综合欧美| 日本一道本久久| 国产成人综合视频| 国产福利在线导航| 91电影在线观看| 日本美女一级视频| 欧美精品做受xxx性少妇| 日韩欧美一区二区三区免费观看| 中文字幕乱码久久午夜不卡| 国产高潮免费视频| 99re这里都是精品| 久久久全国免费视频| 91精品国产丝袜白色高跟鞋| 第三区美女视频在线| 欧美亚洲日本网站| 精品人人人人| 久久久久久久9| 国产毛片精品一区| 三级黄色在线观看| 欧美视频一区二区三区| 国产在线91| 琪琪亚洲精品午夜在线| 国产精品一区二区三区美女| 久久人妻无码一区二区| 韩国欧美国产1区| 亚洲一级二级片| 欧美日韩国产另类一区| 成人免费在线观看| 国产福利精品av综合导导航| 午夜a一级毛片亚洲欧洲| 国产不卡一区二区视频| 成人性视频网站| 中文在线观看免费网站| 精品国产乱码久久久久久免费| av网站导航在线观看免费| 91久久在线视频| 国产精品地址| 久久人人爽人人片| 一区二区高清视频在线观看| 国产黄色小视频在线观看| 欧美美最猛性xxxxxx| 最新国产一区二区| 国产在线播放观看| 91蝌蚪porny| www.久久久久久久| 一区二区福利视频| 国产91精品在线| 伊人久久婷婷色综合98网| 黄一区二区三区| 永久免费看黄网站| 精品国产乱码久久久久久久| 爱啪视频在线观看视频免费| 欧美日韩国产三区| 欧美bbbbb| 91人妻一区二区三区蜜臀| 欧美一区二区不卡视频| www在线观看黄色| 日本一区精品| 九九视频精品免费| 国产精品第一页在线观看| 亚洲精品天天看| 欧美视频在线视频精品| 免费的av在线| 成人精品视频一区二区三区尤物| 国产 欧美 日韩 在线| 在线观看亚洲视频| 成人国产精品一区二区网站| 日韩极品视频在线观看| 久久久不卡影院| 国产绿帽一区二区三区| 97久久精品人搡人人玩| 激情五月综合网| japan高清日本乱xxxxx| 激情懂色av一区av二区av| 在线观看免费网站黄| 95av在线视频| 免费日韩av片| 欧美大片xxxx| 亚洲人成电影网站色…| 99国内精品久久久久| 国产免费黄色av| 成人欧美一区二区三区黑人麻豆| 内射无码专区久久亚洲| 国产精品福利小视频| 欧美久久成人| 日日操免费视频| 亚洲另类欧美自拍| 精品99re|