如何学习Java应用程序设计

10

我过去两年一直在使用Java编程,现在想进入应用程序设计领域。到目前为止,我只是从事编码,也就是给我提供的设计文档/类图等并要求我进行编码。现在我想学习如何设计,也就是说,我想学习什么时候应该使用接口而不是具体类,根据需求提出设计、设计技巧和其他方面的所有内容。

请问您能否建议任何一系列的文章/书籍等来学习这些内容。

我已经尝试过阅读《Headfirst Design Patterns》,但即使我能够掌握一些设计模式,我仍然无法自己设计应用程序。

请帮忙。


嗨... 你是新手,我有一个建议... 如果你喜欢某个答案,请不要忘记接受它。 这会鼓励其他人回答你。只需检查下面你最喜欢的答案旁边的“勾号”即可。 :-) - Rites
8个回答

11

设计模式是建立在基本原则上的高级设计特性的示例,例如关注点分离、一致性和可扩展性。如果你还在想接口和类的问题,可能需要阅读一些基本的面向对象思想。例如,阅读有关SOLID 原则的文章。因此,我不会首先买书,而是应该从那篇文章开始,并从那里的链接和谷歌搜索中继续学习。

然后,读书并不足够,您需要实践。

下次收到规格说明书时,请认真阅读并理解要解决的问题,然后回去自己设计它。将您的尝试与规格说明书进行比较。或者考虑规格说明书之外的替代方案,假设这里没有接口,或者那里没有工厂,这会有什么影响?

理想情况下,如果您的领导开始给您提供更少具体的问题并允许您设计它们,您的成长将得到促进。项目压力可能会阻止这种发展。在这种情况下,我认为您需要在自己的时间里进行工作。选择一些小项目并开始工作。这可能很困难,除非您有导师,但我认为只读不做不会使您进步得那么快。


1
在提出思考实验来理解现有规范方面,建议给予加分。同时不要忘记,如果您考虑了一段时间仍然不明白为什么要这样做,您应该向同事询问。只要您不是每小时都在纠缠他们,并且他们能看到您正在努力学习,我相信他们会很乐意帮助您理解。 - Andrzej Doyle

3

3
你可以阅读Josh Bloch的《Effective Java》。
设计模式是好的,一定要学习它们,但真正的技能在于知道何时使用它们。大多数情况下,你需要亲自动手。
一个平庸的程序员会被分配一个任务,不停地敲键盘直到有东西能用,然后就离开了。偶尔只需让某些东西可用即可,但通常像这样的程序员会留下一堆可怕的代码。
你可以从更加学术化的方法中学到很多东西。编写一些代码,让它运行起来,然后改进它。从头开始重写,利用第一次编写它所学到的知识。花费额外的时间查看你可以改进的所有方面:速度、内存、算法、设计模式,甚至是你的编码风格。

2

对于初学者,可以尝试以下步骤:

  1. 阅读一段关于设计模式的介绍(如书中所列)。
  2. 尝试理解它解决的问题。
  3. 想象一个具有这个问题的任务。
  4. 编写代码。
  5. 在纸上手绘程序的类图(不使用自动化工具)。

每天学习一种模式是非常好的进度。


0
唯一的提升方式就是阅读设计模式,尝试实践,从错误中学习,并向那些已经有相关经验的人寻求建议。另外,你还应该知道何时不使用设计模式。有时候我们会忽视设计模式,这可能会破坏项目。

0

我同意Ben的观点,并想要补充一些我的看法...

设计是一门艺术,就像绘画一样,它不是来自书本,而是来自内心。

像设计模式这样的概念并不是设计的全部,它们只是用于创建设计的工具包中的一部分。特别是设计模式为我们提供了一种词汇,用于描述解决一些常见问题的方法。然而,确定要解决的问题是从需求中创建设计的艺术的一部分。

查看与您收到的代码相关的设计文档的要求。思考设计师将要求分解成一系列有限的问题的方式。

当然,不要害怕询问设计师的方法。


0

学习的最好方法是通过实践以及学习其他真实世界的项目。

学习设计模式对于设计良好的应用程序至关重要,但这本身还不足够。除了书籍/阅读/示例之外,我建议您查看现有应用程序的设计。选择一个开源项目-探索、实验并为该项目做出贡献。在做出贡献的同时,了解项目中使用的设计原则和方法。不要害怕尝试多个项目,直到找到您最感兴趣的“那一个”为止。

当然,一开始您需要理论知识作为基础,因此我推荐以下书籍:

  • Larman所著的《应用UML和模式》

0

设计应用程序需要一些实践,但这不应该阻止你尝试。过一段时间,你就会掌握它;

一个提示:尝试向同事学习。让他们展示给你他们如何设计应用程序,他们遵循什么流程,如何识别问题以及他们是否使用模式来解决问题?有时候最好看看设计过程是如何工作的,而不是试图自己学习所有内容。

我对好资源的建议:

  1. SourceMaking Design Patterns

  2. 设计模式视频课程


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接