回覆列表
-
1 # 玩著學程式設計
-
2 # 陝西IT優就業
程式要隔離變化:首先要抽象、剝離出固定的部分,即使剩餘部分再怎麼變化,它也是不變的;做到這一點就必須使程式依賴於抽象,而不依賴於實現;這裡的“抽象”應該從廣義上理解,它可以是interface也可以是抽象類,可以利用ioc,甚至一個方法都行,總之,這部分不能使用具體的實現。
舉個生活中的例子:小明接到一個電話找他爸爸,但恰好他不在家,於是小明告訴對方晚點再打過來。過一會兒爸爸回來了,但剛才對方是誰小明忘了問,那他怎麼向爸爸介紹這個人呢?
1、剛才有同事給你打電話了;
2、剛才有朋友給你打電話了;
3、剛才有個男的給你打電話了;
4、剛才有人給你打電話了。
小明會選哪一句?隨便點的就會選第4句,絕對不會錯;認真點的說第3句,基本不會錯。但第2句就不一定說了,沒準這人是債主呢,“要是再不還錢,就XXXX”;第一句就純屬yy了。這說明依賴的範圍越大就越可靠,這裡的“大”可以理解為抽象程度的高低,面向抽象程式設計,道理其實就這麼簡單。 也可由單一職責原則引出面向抽象原則:職責太多就需要剝離,剝離後依賴的部分只能是抽象。
所謂面向抽象程式設計是指當設計某種重要的類時,不讓該類面向具體的類,而是面向抽象類,及所設計類中的重要資料是抽象類宣告的物件,而不是具體類宣告的物件。就是利用abstract來設計實現使用者需求。
例如說求某種圖形的面積或者是體積就是一種很好的體現的面向抽象程式設計的思想;
面向抽象程式設計目的是為了應對使用者需求的變化,將某個類中經常因需求變化而需要改變的程式碼從類中分離出去。其核心是讓類中每種可能的變化對應的交給抽象類的一個子類去負責,從而讓該類的設計者不去關心具體的實現,避免所設計的類依賴於具體的實現;
以前學習Java的時候看的是如鵬網的影片教程——《這樣學Java不枯燥》,挺不錯的,這一部分講的比較詳細,聽起來也比較容易理解,透過開發超級瑪麗,飛機大戰,連連看,湯姆貓,電影的彈幕動畫來講解Java的知識點,沒想到Java還可以這麼學,課程體系額設定,可以極大的激發對程式設計的興趣,蠻有成就感哦,具體的可以到如鵬網官網上去了解一下