避免“錘子”心理

避免“錘子”心理

昨天看《大話設計模式》,其中講到主人公小菜,自從理解了面向對象中的繼承,就喜歡使用這樣的代碼結構,進而限制了思維的事。

我不由地開始反思自己最近的想法。要引以爲戒啊。

一、反思

這種“錘子”心理的本質其實是想要立刻有回報——我學會了這手,就要讓它派上用場,否則我付出了時間和心血,我就虧本了。結果很有可能爲了使用而使用,不僅沒有給自己帶來方便,反而帶來麻煩。

學技術其實很忌諱這樣的心理。要引以爲戒。

同時,學技術,還應該有這樣的肚量——這個東西我學習了,可能不會用上,可能用得很少,或者乾脆用不上(可能性很小的哦,更多的情況是你在使用,缺渾然不覺)。但是話說回來——夜路走多了,總會用得上的。除非不對路。

二、組合/聚合複用原則

繼承、組合、聚合都是面向對象中複用代碼的常用手段。

繼承。對象的繼承關係是在編譯時就定義好了,所以無法在運行時改變從父類繼承的實現。子類的實現與它的父類有非常緊密的依賴關係,以至於父類實現中的任何變化必然會導致子類發生變化。當你需要複用子類是,如果繼承下來的實現不合適解決新的問題,則父類必須重寫或者被其他更合適的類替換。這種依賴關係限制了靈活性並最終限制了複用性。

組合。組合是一種強“擁有”關係,例如大雁和翅膀。大雁擁有翅膀,且兩者生命週期一樣。組合強調“組”字,是部分和整體的關係。

聚合。聚合是一種弱“擁有”關係,例如大雁和雁羣。雁羣少一隻大雁其實還是可以稱之爲雁羣的。聚合強調“聚”字,是包含和被包含的關係,但被包含不一定就是其中的一部分。

三、隨感

上面好大一段都是抄的《大話設計模式》原話。如果我們只是整理、解析別人東西,其實是不可能超越的。只有你去創造,去開拓,去建立前人沒有的東西的時候,才能成一家之言。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章