很多人问我: 我做了10年Java后端,经历过外企、互联网公司,也接手过无数“历史遗留项目”。 今天总结8个我最有感触的设计原则,很多程序员其实都听过,但真正理解并用好的人不多。 1. 单一职责原则(SRP)一个类,只做一件事情。 很多项目最大的问题就是: 比如一个UserService:
这种代码看起来写得很快,但后期维护非常痛苦。 正确做法:
拆开之后,代码会变得非常清晰。 一句话总结:
2. 开闭原则(OCP)对扩展开放,对修改关闭。 这是我在做大型系统时体会最深的一条原则。 很多系统有这样的代码: 每增加一种类型,就要修改原有代码。 正确做法: 用策略模式。 新增类型时,只需要新增实现类,不需要改原来的代码。 大型系统必须遵守这条原则,否则维护成本会指数级上升。 3. 依赖倒置原则(DIP)高层模块不应该依赖底层模块,都应该依赖抽象。 简单理解: 不要依赖具体实现,要依赖接口。 错误示例: 正确方式: 这样可以:
Spring框架其实就是在帮我们做这件事。 4. 接口隔离原则(ISP)不要让一个类实现它不需要的接口。 很多系统中有一个巨大的接口: 里面可能有20多个方法。 结果: 很多实现类只用到其中几个方法。 这就是典型的接口设计不合理。 更好的做法: 拆分接口:
代码会更清晰。 5. 组合优于继承刚工作的时候,我特别喜欢继承。 后来发现: 继承一多,系统就很难维护。 比如: BaseController 继承层级越来越深。 更好的方式是: 使用组合。 比如: 组合让系统更灵活。 6. 高内聚,低耦合这是系统稳定性的核心。 好的系统:
坏的系统: 一个改动影响10个模块。 判断一个系统好不好,其实很简单: 改一个功能,要改多少文件? 如果超过5个,大概率设计有问题。 7. 面向接口编程,而不是面向实现很多人以为自己在做这件事,其实没有。 比如代码中直接写:
这其实还是依赖具体实现。 更好的做法是: 通过接口注入依赖。 这也是为什么很多公司要求: 禁止在业务代码中直接new对象。 8. 不要过度设计这是我最后才真正理解的一条原则。 很多人学了设计模式之后,容易出现一个问题: 到处用设计模式。 结果代码变成这样:
一个简单需求,代码写了500行。 其实真正好的设计是: 刚刚好。 系统设计的目标不是炫技,而是:
最后总结一句话很多人写了很多年Java,却一直在写“功能代码”。 当你真正理解这些原则之后,你会发现:
这才是一个成熟后端工程师的标志。 如果你也是Java开发者,可以聊聊: 你觉得最重要的设计原则是哪一个? 查看详情:https://www.toutiao.com/article/7609476389431067199 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|手机版|小黑屋|梦想之都-俊月星空
( 粤ICP备18056059号 )|网站地图
GMT+8, 2026-2-24 07:19 , Processed in 0.027163 second(s), 17 queries .
Powered by Mxzdjyxk! X3.5
© 2001-2026 Discuz! Team.