何為抽象?你有本末倒置嗎?

2021-09-06 20:44:27 字數 2804 閱讀 9574

一、何為抽象?

提到抽象,你會想到什麼?是這些嗎?

抽象是物件導向的基礎,有了抽象才會有物件導向的三大特徵:繼承,封裝,多型。

層與層聯絡要依賴抽象,上層依賴抽象,下層也要依賴抽象。

總之中的乙個句話,程式設計就是要依賴抽象。

等等這類的話,我們朗朗上口。那麼回頭再來看這些,它究竟是什麼?

它不是抽象,它是抽象的一些體現,也就是說這都是抽象後的結果,抽象的優點優點。作為程式猿的我們要的就是抽象帶來的這些結果,可是我們更重要的乙個任務是,怎樣做出「抽象」?把抽象敲出來,有**來體現。對於程式猿來說,僅僅有將想法落實到**上才是程式設計,是有質量的程式設計。

二、為什麼抽象

那麼何為抽象?

有同樣就抽象

不同領域要聯絡須要抽象

為什麼要抽象?

抽象的最直接目的:為了變化,方便交流

這兩個問題往往是分不開的,沒有目的的抽象就是無意義的工作。所以在這裡一塊說說我的看法。

先說第一點:有同樣就抽象。遇到幾個類有同樣的特性:方法也好,屬性也好,就能夠去使用抽象了。

1、變動少。凡是這樣的總體的改動,假設有抽象的父類,僅僅要在父類中改動,子類繼承就可以。省去該多處的麻煩,最怕的是沒有改完。

2、介面統一,多種選擇。有抽象,就意味著子類能夠有多種實現;多型在這個時候就是最完美的詮釋了抽象的奇妙。對外是統一的,可是卻能夠選擇不同的「子類」,達到不同的效果。

3、擴充套件是極方便的。當前存在的類的實現不能滿足我的須要,我僅僅須要新增乙個繼承抽象的子類,定義須要的新實現就能夠達到目的,與「開閉原則」吻合。

其次是:不同領域要聯絡須要抽象——解耦緊密相鄰的關係

在普通的只是的是,無論什麼牌子的usb資料線,都能夠接通不論什麼牌子的電腦的usb介面。

這裡的介面就是抽象出來的一套規範,僅僅要不同的「領域」把要接觸的「介面」規定好,就能夠依照這個介面的約定去進行各種實現了。在程式設計中更是,為了編碼變得簡單,為了系統系能好,為了合作開發,乙個系統被分成了「n」層,分層的目的,是為了解耦,  要直接聯絡的兩個類通過一組約定,有直接聯絡程式設計間接聯絡。在遵守約定的情況下,進行各自的開發。互不影響。

假設沒有介面,直接發生關係就會這樣:

1、每走一條線,都須要從頭走到尾;假設一處做不好,就無法執行;

2、一處方法發生變動,特別是底層方法,呼叫這種方法的全部的類都須要變動。

3、需求變動,要求更換曾經類的執行過程,好比商場打折,有多種選擇的情況下,僅僅能新增類,在須要的時候,暫時更改呼叫那個,對於公布的系統,這可不能算一種解決方式。

(這裡的領域,你能夠理解成層。層的概念也是可大可小,沒有嚴格限制,有**經驗的人依據經驗來劃分自己的層)

從抽象的由來就能夠看出,抽象出現就是為了「交流」。假設說這個類在系統中永遠僅僅是這樣,不會擴充套件,不會被傳承,不會發生變化,那麼就沒有抽象的必要了,由於它是「唯一的」。 不變化,交流不影響,要變化,還要交流就必須抽象。

三、抽象的體現形式

1、抽象成基類。

大家熟知的形式。將相似的幾個類中能夠抽象的成員拿出來,形成他們的基類。

基類也可分為抽象類和介面,抽象類和介面的差別在於:基類是對屬性和方法的抽象,側重是對「**反覆」的解決;介面是對方法的抽象,避免「方法反覆」。

2、合併同類項,不新增父類。

這樣的方式,是近期學習設計模式的時候突然的理解。在工廠模式到抽象工廠模式改造的過程就是這樣。大家看分析。

工廠模式:僅僅建立乙個產品:button。類圖例如以下:

建立還有乙個產品:text。類圖例如以下:

觀察兩個類圖,一模一樣的工廠模式,一次卻僅僅能實現乙個產品,要是實現兩個產品,就須要把兩個圖結合起來,那就成「大物」了。讓咱們來合併同類相吧。

​1、兩個factory,合併,方法+1;兩個unixfactroy,合併,可是方法+1;兩個windowfactory,合併,方法+1。之所以能夠合併時由於他們本質一樣。

​2、可是詳細的button,text抽象類和詳細的實現類可不能合併了,他們本質不一樣。

​看合併的結果:

不新增父類,新增第三者。

這是最簡單的一種抽象,也是經常使用的一種,預計有些人沒把它當成抽象。

把多個類中用到的同樣方法拿出,作為公共方法,放到第三個類中。這是我們經經常使用到的,和其它類不建立繼承或實現關係,須要的時候就引用。當然在某種情況下,這個第三個類可能被抽象成介面來對待,詳細的不做討論,情況太多,詳細對待。

總結:

抽象**於個體,多了才抽象。

現有的子類,抽象後,才有的基類。

分析設計模式的時候,從簡單入手,畫著畫著,就有了父類,有了繼承,明確的抽象的存在;寫**也是,先寫,寫著寫著就有了抽象類,有了介面。



有監督學習以及何為訓練

1有監督 針對於樣本而言,知道該樣本屬於哪個類別,隨後將該樣本送入分類器或者應用於其他,需要使用到樣本自身所帶標籤 就是類別,比如來了乙個人,性別標籤 男和女,當然我們不能將 男或者女,直接貼在樣本上,樣本在被計算機使用的過程中,需要變換成數字,計算機能夠識別的計算機語言才行,故而,這裡一般人為定義...

今天你還抽象?

因為沒有網路,資訊變得不順暢。和外部溝通也少,有沒有辦法寫乙個部落格文章。昨天碎碎念低一點。嘻嘻.最早接觸抽象就是在美術課上,有個什麼抽象派。可是再多的就不是非常了解了。後來就是在tgb 學習物件導向的時候。接觸過的 oop核心 抽象。計算機中我們是這麼做的 把乙個現實中相似的事物 物件 抽象成一類...

有你就是溫暖

無意中的相遇,卻為彼此幽暗的生命帶來柔和美好的光亮。看不見你,卻依然能感到溫暖。原來,愛是一種比陽光還要溫暖,比春天還要美麗的情感!這世上有一種愛叫靈魂相依,有一種感覺叫有你心安,有一種暖叫懂得,每乙份懂得,都是心的呼喚。牽念,裹著暖暖的感動。心,一經觸控,就沉醉其中。或許,乙個懂字,包容了所有的委...