单一职责原则

前言: 这些都是老师布置的作业得写,顺便记录下

单一职责原则官方解释: 对类来说的,即一个类应该只负责一项职责

理解: 如果类 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 + "正在天上运行!");
}
}

总结: 单一职责的原则注意事项和细节

  1. 降低类的复杂度,一个类只负责一项职责。

  2. 提高类的可读性,可维护性

  3. 降低变更引起的风险

个人理解:其实还是高内聚 低耦合 !

但是再思考下,如果工作量少的话,这样子去实现会特别的臃肿,大材小用了,那么当工作量少的话还可以如下去实现,把 类 降一级成为 方法

这里虽然没有在类的级别上遵守单一职责原则,但是在方法的级别上,仍然是遵守单一职责

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 + "正在天上运行!");
}
}

总结:通常情况下,我们应当遵守单一职责原则,只有当逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则

posted @   zpchcbd  阅读(140)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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
点击右上角即可分享
微信分享提示