《Head.First設計模式》的學習筆記(1)

來源:互聯網
上載者:User

書中列舉了一些讓大腦就範的原則,其實這也是我們在學習中應該遵循的原則。這些原則如下:

1、慢一點,你理解的越多,需要記的就越少。

2、勤做練習,自己記筆記。

3、上床睡覺之前不要再看別的書了,或者至少不再看其他有難度的東西。

4、要喝水,而且要多喝點水。

5、大聲說出來。

6、聽聽你的大腦怎麼說。

7、要有點感覺!

8、設計一點東西!

書中列舉的設計原則:

1、封裝變化。找出應用中可能需要變化之處,把他們獨立出來,不要和那些不需要變化的代碼混在一起。

2、針對介面編程,而不是針對實現編程。

舉例說明:

假設有一個抽象類別Animal,有兩個具體的實現(Dog與Cat)繼承Animal。

“針對實現編程”的做法:Dog d = new Dog();d.bark();

“針對介面編程”的做法:Animal animal = new Dog();animal.makeSound();

                                或者:Animal animal = getAnimal();animal.makeSound();

3、多用組合,少用繼承

原因:

       a、繼承會使類無限膨大,可能會使類變得臃腫。

       b、子類可能會繼承父類中那些無用甚至有害的方法。

       c、組合比繼承更靈活,可以實現在執行中動態改變對象的功能。

4、為了互動對象之間的松耦合設計而努力。

5、類應該對修改關閉,對擴充開放

6、要依賴抽象,不要依賴具體類
解釋:不要讓“高層組件”依賴“低層組件”,而且,不管“高層組件”還是“低層組件”,兩者都應該依賴於抽象。
避免違反該原則的幾個方針:
1)、變數不可以持有具體類的引用。
如果使用new,就會持有具體類的引用,可以使用工廠來避開這種引用。
2)、不要讓類派生自具體類。
如果派生自具體類,就會依賴具體類,可以派生自抽象或介面。
3)、不要覆蓋基類中已實現的方法。
如果覆蓋基類中已實現的方法,那麼基類就不是一個真正適合被繼承的類。基類中已實現的方法應該被所有子類所共用。
7、最少知識原則。
解釋:當你設計一個系統時,不管是任何對象,你都要注意與它互動的類有哪些,並注意它和這些類是如何互動的,盡量避免過多的類別結合程度在一起,帶來維護成本的上升。
這個原則推薦的一些方針:
就任何對象而言,在該對象的方法內,我們只應該調用一下範圍的方法
1)、該對象本身
2)、被當作方法的參數而傳遞進來的對象
3)、此方法所建立或執行個體化的任何對象
4)、對象的任何組件。
用代碼加以說明:

 1public float  getTemp()
 2{
 3    //  沒有採用該原則
 4    Thermoment thermoment = station.getThermoment();
 5    return thermoment.getTemperature();
 6}
 7
 8public float getTemp()
 9{
10    // 採用該原則
11    return station.getTemperature();
12}

(設計原則未完,待續)。

下一篇記錄“策略模式”。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.