設計模式是乙個程式的主體!

2021-07-10 16:20:36 字數 1061 閱讀 6984

設計模式是用來解決軟體開發中重複出現的問題,久經考驗的方法。當程式設計師遇到反覆出現的問題時,他們通過應用合適的設計模式來解決問題。設計模式是由最聰明的計算機科學家設計出來的,歷經了時間的考驗,它們被認為是好的方法。使用設計模式,程式設計師不需要自己想方法去解決所有的程式設計難題,他們可以使用設計模式。設計模式節約開發時間,能開發出更靈活,可靠和健壯的軟體。設計模式重用了概念的想法,解決方法的設計理念,考慮了他人的使用。它是非常棒的想法,讓許多事情更合理了。

但事實是:設計模式已經(幾乎)隕落了。

設計模式應用的成功的先決條件是程式設計師在遇到重複出現的問題時能夠意識到它們的存在。但如果程式設計師不能意識到問題的存在,他們將不會知道已經有人解決過類似的問題了,也不會知道還有設計模式的存在。他們不是應用設計模式來解決這些普遍存在的問題,而是閉門造車,用自己的方法來解決問題。他們花了更多的時間卻寫出可靠性差的**。

設計模式的隕落是因為大部分程式設計師不足夠了解它們,要解決問題時不能意識那些重複出現的問題的存在。如果他們不能意識到問題,他們就不能用設計模式來解決問題。

在面試中我要求過幾千個程式設計師解釋設計模式背後的概念,讓他們寫下每個他們能夠回憶起的設計模式的名字。但相當多的程式設計師根本就不知道什麼是設計模式,或者他們的相關知識太薄弱,以致於就算碰到問題時,他們的知識也不夠處理這些問題。很少的程式設計師可以說出他們對設計模式的理解。非常少的人知道多於四五種。更少的人可以描述出設計模式能夠解決的問題。這意味著大多數程式設計師在日常工作中遇到一些普遍的問題時,他們會用自己的方法去解決,而不是採用很普遍的解決方法(設計模式)。

不了解設計模式的程式設計師們當讀到用設計模式開發的**時會感到迷惑。他們不能夠理解其他程式設計師為什麼要用這種方法來解決問題。他們面對這樣一些非常普遍的問題時或者遇見設計模式的**時,顯得笨手笨腳。

設計模式也是一種通用語——一種程式設計師皆知的語言,可以用術語來闡述複雜的問題,便於讓其他人明白。但設計模式已經隕落了;你不能用一種你不懂的語言來交流,大部分程式設計師都不能作為一種概念來使用它們。設計模式是一種很少人會說的通用語。

但設計模式還沒有完全衰退,許多聰明的程式設計師仍然知道它們,使用它們。這些人是個例外。正是他們努力推廣的結果,才能讓mvc這個設計模式讓所有程式設計師都熟知,就算是對設計模式知之甚少的人都熟知。

SOA的本質是組織設計的乙個模式乙個方法

本文中的5s 是指麥肯錫企業管理的 7s方 中,除了 願景和戰略之外的5個s 包括 系統systems 組織structure 能力skills 人力staff 文化style 麥肯錫7s模型 很多人都在說soa 但是真正能夠把 soa說清楚的沒幾個。要不就是太概念化,要不就是太意識化。我希望我這次...

SOA的本質是組織設計的乙個模式乙個方法

本文中的5s 是指麥肯錫企業管理的 7s方 中,除了 願景和戰略之外的5個s 包括 系統systems 組織structure 能力skills 人力staff 文化style 麥肯錫7s 模型很多人都在說soa 但是真正能夠把 soa說清楚的沒幾個。要不就是太概念化,要不就是太意識化。我希望我這次...

設計乙個程式能計算乙個日期加上若干天後是什麼日期。

設計乙個程式能計算乙個日期加上若干天後是什麼日期。輸入描述 輸入第一行表示樣例個數m,接下來m行每行四個整數分別表示年月日和累加的天數。輸出描述 輸出m行,每行按yyyy mm dd的個數輸出。示例1輸入 12008 2 3 100 輸出2008 05 13 include using namesp...