2009-12-22 65 views
10

過去兩年來我一直使用Java進行編程,現在我想進入設計應用程序。到目前爲止,我只是編碼即;我給了設計文檔/類圖等,並要求編碼。現在我想學習如何設計,我的意思是我希望精益求精何時應該將一個類作爲接口而不是一個具體的類,根據設計要求,設計技術和設計的所有其他方面提出設計。如何在Java中學習設計應用程序

要了解所有這些你能普萊舍提出任何系列的文章/書籍等

我曾嘗試閱讀倒栽蔥設計模式,但即使我能掌握一些設計的圖案,我仍然不能夠請親自進行設計。

請幫忙。

+0

嗨.... 您是新,所以只是一個建議... 如果您喜歡任何答案,請不要忘記接受它。 它鼓勵其他人回答你。 只需檢查您最喜歡的答案下方的「複選標記」即可。 :-) – Rites 2009-12-22 09:10:07

回答

11

設計模式是基於諸如關注點分離,連貫性和可擴展性等基本原理構建的設計功能的相當先進的例子。如果您正在思考接口和類的階段,您可能需要閱讀一些基本的面向對象思想。例如閱讀有關SOLID原則。所以我不會購買一本書,我會從那篇文章開始,並從那裏跟蹤鏈接和Google。然後,閱讀不夠,你需要做。

下一次你得到一個規範,研究它。瞭解正在解決的問題,然後回家自行設計。比較你的嘗試與規範。或者考慮替代你提供的規範,假設你在這裏沒有接口,或者工廠那裏爲什麼會這麼重要?

理想情況下,如果您的領導人開始給您指定的問題較少並允許您設計,那麼您的增長將會啓用。項目壓力可能會阻止這一點在這種情況下,我認爲你需要在你自己的時間內完成工作。選擇一些小項目並對其進行處理。除非你有導師,否則這可能會很艱難,但我認爲沒有做的閱讀不會很快推進你。

+1

+1通過思想實驗提出瞭解現有規範。別忘了,如果你確實考慮了一段時間的選擇,並且看不出爲什麼這樣做,那麼你應該*能夠詢問你的同事。只要你不是每隔一小時左右都在謾罵他們,他們可以看到你正在努力學習,我相信他們會很樂意幫助你理解。 – 2009-12-22 09:26:26

0

改善的唯一途徑是閱讀設計模式,嘗試的東西,從錯誤中學習,並從誰有一些這方面的經驗已經人獲得建議。另一件事是你應該知道什麼時候不要使用模式。有時候我們忽略了設計模式,它破壞了這個項目。

2

對於開始嘗試這個辦法:

  1. 閱讀一段約1設計模式(因爲他們在書中列出)。
  2. 試着瞭解它解決的問題。
  3. 想象一下這個問題的一些任務。
  4. 編碼。
  5. 在一張紙上繪製程序的類圖(沒有自動化工具)。

每天一種模式將是一個非常好的速度。

0

我同意本,並希望添加我的2 bobs值得...

設計是一門藝術,就像繪畫它不是來自書本,它來自內部。

像設計模式這樣的概念不是設計的alpha和omega,它們是用來創建設計的工具包的一部分。特別是設計模式爲我們提供了描述解決一些常見問題的方法的詞彙表。然而,確定要解決的問題是從需求創建設計的藝術的一部分。

查看與您編碼的設計文檔相關的要求。想想設計師將需求分解成一系列有限問題的方式。

當然,不要害怕向設計師詢問他們的方法。

3

您可能會閱讀Josh Bloch的Effective Java。

設計模式很好,肯定會讀到它們,但它知道何時使用它們纔是真正的技巧。大多數情況下,你需要把你的手弄髒。

一個平庸的編碼器將被賦予一個任務,敲擊鍵盤上,直到他們有一些工作,並繼續前進。有時候,僅僅做一些事情是正確的,但是像這樣的編碼人員通常會留下大量可怕的代碼。

你可以通過採取更多的學術方法來學習大量的知識。寫一些代碼,讓它工作,然後改進它。重寫它,重新使用你第一次學習寫的東西。花更多的時間看看你可以在代碼的所有方面改進什麼:速度,內存,算法,設計模式,甚至是你的編碼風格。

0

最好的學習方式是通過學習和從其他現實世界的項目中學習。

學習設計模式對於設計好的應用程序是必不可少的,但單靠這一點是不夠的。除了書籍/閱讀/例子,我建議通過現有應用程序的設計。選擇一個開源項目 - 探索,實驗併爲項目做出貢獻。同時幫助瞭解項目中使用的設計原則和方法。不要害怕嘗試多個項目,直到找到最能激發你的「一個」。

Ofcourse首先你需要理論知識開始,所以我提出以下建議書:

  • 通過Larman與應用UML &模式
0

設計應用程序需要一些練習,但不應該阻止你嘗試。過了一段時間,你會得到它的掛鉤;

建議:儘量向同事學習。讓他們向您展示他們如何設計應用程序,他們遵循什麼流程,他們如何識別問題以及他們是否使用模式來解決問題?有時候最好看看設計過程如何工作,而不是嘗試自己學習。

良好的資源,我的50美分:

  1. SourceMaking Design Patterns

  2. Video course on design patterns