日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

定义一个鸭子的类java_鸭子类型:一切都是为了复用

發(fā)布時(shí)間:2023/12/16 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定义一个鸭子的类java_鸭子类型:一切都是为了复用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

當(dāng)小平同志說出“科技是第一生產(chǎn)力”的時(shí)候,中國的發(fā)展無不是圍繞此展開的。軟件工程亦是如此。雖然小平同志的話只是一個(gè)總結(jié)。但必須承認(rèn),這個(gè)總結(jié)非常有見地。

軟件發(fā)展,你可能已經(jīng)被各種各樣的名次搞暈了頭。一堆類似OP、OO、SOA等等概念,如果你半年不關(guān)心IT,很可能你就發(fā)覺被世界遺忘了。

可是推開這些概念的表面迷霧,你會看到,所有這的一切,都是我們在努力提高生產(chǎn)力的結(jié)果。而提高生產(chǎn)力的最有效方法就是復(fù)用!

從匯編語言的出現(xiàn),后來高級語言C的出現(xiàn),面向?qū)ο蟮腃++出現(xiàn),面向類型的動態(tài)語言(如Python,Ruby)出現(xiàn)(這是我個(gè)人的看法,我若認(rèn)為動態(tài)語言主要是從類型入手進(jìn)行復(fù)用,歡迎指正),個(gè)個(gè)都是圍繞不同層次的復(fù)用,復(fù)用二進(jìn)制指令、復(fù)用邏輯、復(fù)用對象、復(fù)用類型。

這里我特意說一下動態(tài)語言中的Duck Type(走起來像鴨子那就是鴨子 it walks like a duck so it must be a duck)。如果說這是一種類型的話,我更愿意稱之為“鴨子理論”。因?yàn)椴粸槔碚?#xff0c;不足以說明其在思想上的先進(jìn)性。

def?Sum(aasduck,?basduck):returna+b

上面是一段簡單的語法。如果從實(shí)現(xiàn)上講,duck也許只是讓編譯器識別的一個(gè)關(guān)鍵字而已。代碼執(zhí)行的時(shí)候,會根據(jù)duck進(jìn)行類型推定。但是我們這里講的不是實(shí)現(xiàn),而是藏在duck后面的思想。

那么,為什么要有鴨子出現(xiàn)?回答這個(gè)問題很難。因?yàn)槲覀兌家呀?jīng)被靜態(tài)類型的語言影響很久,甚至可以說毒害不淺,這會讓我們非常難以接受新的思想。

靜態(tài)類型中最最關(guān)鍵的一點(diǎn)是面向契約編程,即雙方定下調(diào)用契約,然后你實(shí)現(xiàn),我調(diào)用。這解決了很大問題。可是,你有沒有發(fā)現(xiàn)就是因?yàn)檫@點(diǎn),我可能不能復(fù)用很多我原本可以復(fù)用的。

談到這里,我先說一下多重繼承。C++語言中一直被人罵的雞肋多重繼承,大家有沒有去想想他出現(xiàn)的根本?原因還在于復(fù)用。因?yàn)?#xff0c;人們不滿足于只能僅僅復(fù)用簡單的個(gè)體,很希望能夠吸取多種對象的功能。這和現(xiàn)實(shí)是很相近的。一個(gè)業(yè)務(wù)實(shí)體往往能夠兼?zhèn)涠喾N實(shí)體的功能。

盡管后來其他語言都是采用接口的機(jī)制取代多重繼承,來實(shí)現(xiàn)業(yè)務(wù)實(shí)體的多個(gè)功能面的契約定義。可是,接口只是解決的契約的定義。另外,對于契約,其實(shí)有時(shí)候是很不公平的事。這讓我想起一個(gè)微軟的認(rèn)證。

微軟的認(rèn)證是有階梯約束的。過了初級才能考中級,而不管你是否已經(jīng)擁有了初級的能力。一句話,你得聽我的!這種契約式的預(yù)定,制約了很多已經(jīng)擁有了能力,但是沒有交錢考試的人!對于他們,這是多么不公平的事?而且,如果有一項(xiàng)任務(wù),必須擁有某種資格認(rèn)證的人才能做,你是看資質(zhì)證書呢?還是看能力表現(xiàn)?

這是個(gè)非常有意思的問題。如果是你,你會選擇哪個(gè)呢?靜態(tài)語言選擇了前者,動態(tài)語言選擇了后者。

鴨子理論這個(gè)時(shí)候,就是充分想利用這些沒有獲得契約的資源。在不改變這些對象的前提下,使用這些資源,就是非常大的復(fù)用。

所以說,萬變不離其宗!抓住“復(fù)用”這點(diǎn),就能很容易理解很多新技術(shù)的背后思想。

我最近在學(xué)習(xí)動態(tài)語言的時(shí)候,一直在思考其中的思想。一些感悟,寫出來和大家一起分享。

總結(jié)

以上是生活随笔為你收集整理的定义一个鸭子的类java_鸭子类型:一切都是为了复用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。