设计模式与有效Java

设计模式与有效Java,java,design-patterns,Java,Design Patterns,我是一名努力提高Java和通用编程技能的学生。我熟悉一些基本的设计模式 我手头有两本书《设计模式的第一人》和《有效的Java》(Josh Bloch),这两本书都旨在推广良好的编程实践 然而,我对“我应该如何阅读这些文本才能使其最有意义”感到困惑 据我所知,设计模式是基础,除了一般的设计模式之外,有效的java还有一些附加实践 什么是看待整个场景的正确方式?你只需要积累知识。其中一部分是通过阅读好书,其中乔什·布洛赫的书是一本非常好的书。其中一部分是在业余时间完成编程任务,关注博客和其他网站,如

我是一名努力提高Java和通用编程技能的学生。我熟悉一些基本的设计模式

我手头有两本书《设计模式的第一人》和《有效的Java》(Josh Bloch),这两本书都旨在推广良好的编程实践

然而,我对“我应该如何阅读这些文本才能使其最有意义”感到困惑

据我所知,设计模式是基础,除了一般的设计模式之外,有效的java还有一些附加实践


什么是看待整个场景的正确方式?

你只需要积累知识。其中一部分是通过阅读好书,其中乔什·布洛赫的书是一本非常好的书。其中一部分是在业余时间完成编程任务,关注博客和其他网站,如stackoverflow。而其中一些你将通过其他实践经验,即工作中获得

这些事情需要时间和经验。享受语言,让自己沉浸其中。模式并不是语言的全部,而是有效工具包的一部分。最好全面理解该语言,然后您将看到设计模式如何帮助解决常见问题,并且通常能更好地解决这些问题。但绝对不要被模式所困扰,除非你对语言有足够的了解。如果事实不被模式所困扰


我想说,Josh Bloch的书是专注于第1部分的最好的书——它非常优秀,向您介绍了所有关键概念(常用方法,如equals和hashcode、Enum、concurrency),还介绍了您将从构建器模式中获得日常好处的模式

这两本书相辅相成。高效Java是关于编写Java代码的最佳实践。设计模式描述了一组常见软件问题的标准解决方案。设计模式实际上是独立于语言的,而有效的Java显然专注于Java语言


但我的一般方法是“始终同意Josh Bloch”(除非Jon Skeet不同意他的观点)

编程模式是最佳实践。 它们应该少用。 每个设计模式都试图处理某种形式的变化

例如,策略模式处理实现中的变化 这基本上是一种花哨的说法,它是一种即插即用的方法

模式产生了灵活的代码,但它们在代码中产生了大量额外的复杂性

也许你想把《应用Java模式》这本书放在你已经拥有的书的旁边。 这是奥拉夫·马森和斯蒂芬·斯泰尔廷写的。此外,所有模式的根都是四人帮,您可能也希望使用他们的书作为参考

然而,我对“我应该如何阅读这些文本才能使其最有意义”感到困惑

我唯一的建议是避免过度杀戮和过度工程。一些经验丰富的OOP(和Java)程序员学习设计模式,并将其视为圣经,通常会创建模糊和无用的代码。这似乎是矛盾的,但如果你仔细想想,事实并非如此

当编程的目标不再是解决问题、产生有用的工具和获得可测量的结果,而是展现一个人的高度成熟、聪明,有时还表现出自大时,代码就变成了一堆对任何人都没有用的狡猾的脑波,不包括编写代码并看着自己疯狂的“白象”感觉良好的人

很多时候我都看到了它们的无用应用。最被滥用的是工厂模式,在这一刻,它相当时髦,事实上就像食品调味品一样随处可见

很多时候,我看到了类和接口的激增,无用的泛化,这是毫无意义的:在某些情况下,我看到了包含2个有用类和10个接口和/或抽象类的包。我也觉得需要使代码“通用”和“可重用”,但必须有一个限制

很多次我都看到了关于这些话题的“宗教战争”


读你想要的书,从中得到你需要的。但在此之后,编写合理的代码。写一些有用的东西,这就是你开始编程的最初原因。

设计模式并不总是好的。过度使用设计模式是不好的

然而,乔希·布洛赫总是对的。相信他,你就得救了


忘记设计模式。乔什·布洛赫的书为您提供了所需的所有模式。

杰夫说。。。谢谢我将首先集中讨论有效的Java,并从它开始。我同意,设计模式是独立于语言的,我们当然是本着这一目的编写了头先设计模式,尽管我们使用Java来演示这些模式。我们还包括许多编程的基本“最佳实践”。乔希·布洛赫的书很好,所以两者都要用!你的回答是我不久前读到的最伟大的事情之一