单一职责原则
前言: 这些都是老师布置的作业得写,顺便记录下
单一职责原则官方解释: 对类来说的,即一个类应该只负责一项职责。
理解: 如果类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 B 和 C,这样 B 就专门解决职责 1, C 就专门解决职责 2
如下面这个例子就没有体现单一职责原则,可以发现Vehicle这个类既去 让 "汽车" 在路上运行,同时也让 "飞机" 在路上运行,明显就错误了!
public class demo1 { public static void main(String[] args) { Vehicle v = new Vehicle(); v.run("汽车"); v.run("飞机"); } } class Vehicle{ public void run(String vehicle) { System.out.println(vehicle + "正在路上运行!"); } }
再看下面这个例子,我们用两个类去定义各自去实现 "飞机" "汽车"的 run 方法,这样子就不会出现类似的错误了!
public class demo2 { public static void main(String[] args) { RoadVehicle v1 = new RoadVehicle(); AirVehicle v2 = new AirVehicle(); v1.run("汽车"); v2.run("飞机"); } } class RoadVehicle{ public void run(String vehicle) { System.out.println(vehicle + "正在路上运行!"); } } class AirVehicle{ public void run(String vehicle) { System.out.println(vehicle + "正在天上运行!"); } }
总结: 单一职责的原则注意事项和细节
-
降低类的复杂度,一个类只负责一项职责。
-
提高类的可读性,可维护性
-
降低变更引起的风险
个人理解:其实还是高内聚 低耦合 !
但是再思考下,如果工作量少的话,这样子去实现会特别的臃肿,大材小用了,那么当工作量少的话还可以如下去实现,把 类 降一级成为 方法!
这里虽然没有在类的级别上遵守单一职责原则,但是在方法的级别上,仍然是遵守单一职责
public class demo3 { public static void main(String[] args) { Vehicle v = new Vehicle(); v.runRoad("汽车"); v.runWater("飞机"); } } class Vehicle{ public void runRoad(String vehicle) { System.out.println(vehicle + "正在路上运行!"); } public void runWater(String vehicle) { System.out.println(vehicle + "正在天上运行!"); } }
总结:通常情况下,我们应当遵守单一职责原则,只有当逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY