如何遵循有效的Java建议?

Pav*_*vel 7 java aop spring spring-data

我已经完成了有效的Java书籍,之后我感到困惑.在本书中,Bloch坚持要求减少可变性,使字段最终,拒绝公共构造函数并支持工厂或构建器模式,使用最终类和方法禁用继承等.

但是现在我正在开发一个基于Spring框架的项目,并且:

  1. 所有实体都必须具有默认构造函数(Spring Data JPA)
  2. 所有服务都应该是非最终的,以模仿它们
  3. 所有课程都必须是非最终的,才有机会获得建议(Spring AOP,AspectJ)

第一眼看来,本书的大部分内容都被AOP,模拟和Spring Data/Hibernate所侵犯.

我该怎么处理呢?这本书在实践中没用吗?

J-A*_*lex 7

有效的Java描述了在可能的情况下最好遵循的一般最佳实践.但它考虑的是纯java,而不是任何框架功能.

框架定义了项目的体系结构,您应该遵循这些规则.该框架拥有自己的最佳实践.

不可变对象很好,因为它们本质上是线程安全的.它们的不变量由构造函数建立,如果它们的状态不能改变,这些不变量总是成立.但是没有严格的规则,每个对象都应该是不可变的,有时在给定任务的范围内是不可能的.

建筑商和工厂模式仍然很好,可以在一个范围内使用Spring project.我Factory在实际项目中使用了Spring依赖项和模式,因为它Factory仍然允许您使用@Autowire对象.

作为一个例子,我在Spring项目中使用了Spark函数.一些功能是@AutowireSpring服务.但是它们自己的功能不是Spring服务.您无法创建它们,new Function()因为Spring将无法使用autowire该服务.但是对于Factory,你可以帮助Spring这样做.

有很多好的设计原则,比如SOLID, DRY, KISS设计模式通常很有用,可以让你更好地组织代码.但有时候,在现实生活中,你很简单就不能将它们全部应用到你的特殊情况中.这里的主要规则是,您不应绝对任何最佳实践,并在实现最终目标应用最佳实践之间找到中间立场.

  • 好的,我喜欢它.并感谢为其他答案留出一些空间;-) (2认同)