Java进阶 - [1-1] 六大设计原则
不要因为某本书而去读,而是因为这本书让你读起来时常有共鸣而去读。
一、单一职责原则
【术语】:SRP,Single Reposibility Principle
【定义】:一个类或者模块只负责完成一个职责。
二、里氏替换原则
【术语】:LSP,Liskov Substitution Principle
【定义】:所有使用父类的地方可以使用子类的对象,子类可以扩展父类的功能,但是不能替换父类的功能。如果需要替换父类功能,建议——多用组合,少用继承。
【含义】:
1、里氏替换原则是针对继承而言的,如果继承是为了实现代码重用,也就是为了共享方法,那么共享的父类方法就应该保持不变,不能被子类重新定义。子类只能通过新添加方法来扩展功能,父类和子类都可以实例化,而子类继承的方法和父类是一样的,父类调用方法的地方,子类也可以调用同一个继承得来的,逻辑和父类一致的方法,这时用子类对象将父类对象替换掉时,当然逻辑一致,相安无事。
2、如果继承的目的是为了多态,而多态的前提就是子类覆盖并重新定义父类的方法,为了符合LSP,我们应该将父类定义为抽象类,并定义抽象方法,让子类重新定义这些方法,当不存在子类替换父类实例(根本不存在父类实例了)时逻辑不一致的可能。
三、依赖倒置原则
【术语】:DIP,Dependence Inversion Principle
【定义】:下层模块引入上层模块的依赖,改变原有自上而下的依赖方向。
四、接口隔离原则
【定义】:建立单一接口,不要建立臃肿庞大的接口。接口尽量细化,同时接口中的方法尽量少。
【含义】:
1、接口要尽量小
- 不要违反单一职责原则。
- 要适度的小,要适度。
2、接口要高内聚
- 提高接口、类、模块的处理能力,减少对外的交互。
3、定制服务
- 通过对高质量接口的组装,实现服务的定制化。
五、迪米特法则/最少知识原则
【术语】:LoD:Law of Demeter
一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂,那是你的事儿,和我没关系,我就知道你提供的这么多pulic方法,我就调用这么多,其他的我一概不关系。
六、开闭原则
【定义】:类、方法、模块应该对扩展开放,对修改关闭。
【含义】:添加一个功能应该是在已有的代码基础上进行扩展,而不是修改已有的代码。
— 要养成终身学习的习惯 —
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南