从零学Java设计模式
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2021年11月,有一位资深的Java开发者对我说:

“我做高级工程师差不多20年了,但我不知道怎么继续提高水平。”

有这种感觉的人很多。他们提到的时间未必都是20年,但总之,有许多开发者与工程师做到“资深”或“高级”(也就是senior)这个层面之后,都觉得很难再进步了。

别误会,我不是说senior不好!

到了这个级别,你可能会拿到很好的项目,可能会使用很棒的技术,可能会处理复杂的问题,也可能会面临深层的技术挑战。

但是有一天,你或许会像刚才那位开发者一样,突然觉得自己还想做点什么,比如想对项目的发展方向施加更大的影响,想在工作中有更大的独立自主权,或者想给其他开发者提供更多的启发与指导。

以前经常有人跟我说起这种感觉,但那一次尤其让我关注。因为那天在聊工作之前,我看到了JCP(Java Community Process)的选举结果。我的朋友Miroslav Wengner(也就是Miro)获选为执行委员会(Executive Committee,EC)的执行委员,JCP是一套给Java技术制定标准的工作流程。

一说到这里,我就总是想起以前的事……

第一次遇见Miro,是我们在Sun Microsystems公司(Java技术就是由Sun创建的)的NetBeans团队共事的时候。Miro和前面提到的那位开发者一样,也做了多年Java开发。那时我跟他详细聊过一次开发工作,他当时同样在senior职位上待了好些年,但并没有就此满足。几年之后的今天,Miro早就超越了senior层面:他自由安排工作,发表技术演讲,做开源项目,给OpenJDK的Java Mission Control项目提交内容,还成为Java Champion,并且是JCP EC的一员,他就差写一本书了!

其实你也可以像Miro这样走得更远:打造自己的技术品牌,摆脱大家对senior开发者的刻板印象,更积极地推进你的项目,影响你的公司,乃至改变整个世界。

那怎么才能超越senior层面呢?这正是这本书要讲的问题。

这本书吸引我的地方在于它讲了设计模式的重要作用,那就是帮助我们超越senior级别。到了senior之后,有人可能想改做管理,有人可能想继续做技术,并达到staff(主管)级别乃至成为更高级别的工程师,还有人可能想成为自由职业者或进行自主创业。无论如何,这都要求你在保证代码品质的同时,必须有更强的责任心。

设计模式和代码当然是直接相关的,但模式本身并不等同于代码,它有着自己的意义。模式,是把行之有效的解决方案封装起来,帮助我们解决那些在设计高品质软件时经常遇到的难题。它并不局限于某段特定的代码或某个特定的项目,而是为我们提供一套说法,让我们可以用这套说法来交流,以描述并解决问题。超越senior层面是为了让自己的职业前景更加广阔。刚开始,你可能是以高级开发者或资深开发者的身份来做项目的,但你在该过程中可以参与许多事情,从而增强自己的影响力。

掌握设计模式可以让你更快地超越当前的项目,并且更为积极地参与公司乃至整个行业的其他项目。你或许还能帮助大家调整技术的发展方向,例如,你可以参与开源项目、加入软件基金会,也可以进入标准化组织(Miro就是这样,他在JCP EC里面参与Java标准的制定工作)。

那么,如何才能掌握设计模式呢?这正是这本书要教给你的。你会知道怎样在Java生态系统中运用各种各样的设计模式,你不仅能理解这些模式所依据的理念以及它们所采用的术语,而且能看到实际的解决方案,从而了解这些模式在日常的软件开发工作中所起的作用。

Miro还有个厉害的地方,就是他能把软件跟实物联系起来。他有个开源项目Robo4j,获得过Duke's Choice Award奖,该项目能让你用Java代码操控机器人与无人机。我很高兴看到Miro能用同样的方法讲解设计模式。这本书也是采用各种交通工具及其部件来举例的,这些例子会借助Java 17与后续版本的新特性,帮助大家把设计模式运用到现实中,以解决实际而具体的问题。

你是不是已经准备开始打造自己的技术品牌、发展自己的事业,并努力超越senior层面了?了解这些模式能够帮助你融入团队,让你与同事顺畅地沟通,并在重要决策上获得发言权。

Bruno Souza

首席顾问、Java Champion,JCP EC执行委员

Twitter:@brjavaman

个人网站:https://java.mn