-Head First Design Pattern- 大師與門徒(3) -Favor Composition over Inheritance

來源:互聯網
上載者:User
大師:蚱蜢啊,前上一談,諒達雅鑒,迄今有些時日了吧。你對“OO中的繼承”有什麼徹悟嗎?
門徒:是的,大師。“OO繼承”之強大,非吾之言能盡。及至後來,親見知識,發現“OO繼承”並非神通廣大,不是總能設計出容易伸縮和維護的代碼!
大師:呀,的確如此,看來你已經長進了很多了啊。告訴我,我親愛的蚱蜢,如果不通過“繼承”,何以複用?Copy?
門徒:哈,說笑了,大師,我想在運行時(RunTime)可以採用組合和委託的方法來代替“繼承”。
大師:Go On   …
門徒:以前我們在子類中採用繼承父類的方法,在編譯時間(Compile Time)所有的行為都被固定死了!另外,這時所有繼承後的子類都有重複的行為。現在,如果我們通過組合的方法擴充類的行為,在運行時(RunTime)使用這些行為變得Easy!
大師:非常好,蚱蜢,你已經開始瞭解組合方法的威力了。
門徒:是啊,通過這個技術,產生的對象不僅可以包括父類所有的功能(這些功能我們可能根本沒想到過),而且不用修改父類的代碼,就可以為對象增加更多的功能了,神奇!
大師:那麼通過組合的方法維護你的代碼,你收穫了哪些東西呢?
門徒:組合,哼,我不必修改原來的代碼,要增加新的功能,就編寫新的代碼。
由於我沒有修改原來的代碼,所以bug的產生和無意識地對以前代碼造成的影響大大減少,厲害吧。
大師:非常好,今天就到這裡了,蚱蜢。我希望你繼續深入學習這個主題…記住,代碼對修改必須是關閉的,就像晚上的睡蓮;對擴充必須是開放的,就像是早上的睡蓮。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.