单一职责原则
七种设计原则
为了提高代码的可重用性,可读性,可靠性,可扩展性,高内聚,低耦合,提出了23种设计模式。
而编写设计模式则需遵守七大原则
1)单一职责原则
2)接口隔离原则
3)依赖倒置原则
4)开闭原则
5)里氏替换原则
6)迪米特法则
7)组合及复用原则
单一职责原则
定义
即一个类负责一项职责。
示例
//单一职责原则示例1
public class SingleResponseblity {
public static void main(String[] args) {
Vehicle vehicle=new Vehicle();
vehicle.run("小汽车");
vehicle.run("摩托车");
vehicle.run("飞机");//这个例子说明这个run方法违反了单一职责原则
}
}
class Vehicle{
public void run(String vehicle){
System.out.println(vehicle+"在公路上疾驰.................");
}
}
//单一职责原则示例二
/*
* 示例分析
* 1.满足了单一职责原则
* 2.改动太大
* 3.改进方案,直接修改vehicle类==》参考类3
* */
public class SingleResponseblity2 {
public static void main(String[] args) {
WaterVehicla wv=new WaterVehicla();
RoadVehicla rv=new RoadVehicla();
AirVehicla av=new AirVehicla();
wv.run("轮船");
rv.run("汽车");
av.run("飞机");
}
}
class WaterVehicla {
public void run(String vehicle) {
System.out.println(vehicle + "在水种上疾驰........");
}
}
class RoadVehicla {
public void run(String vehicle) {
System.out.println(vehicle + "在公路上疾驰........");
}
}
class AirVehicla {
public void run(String vehicle) {
System.out.println(vehicle + "在天空上疾驰........");
}
}
//单一职责原则示例3
/*
*示例3分析
* 1.修改方法未对原来的类做大的修改。只是增加方法
* 2.虽然没有在类这个级别上遵守单一职责原则,但是在方法的级别上遵守了单一职责原则
*
* */
public class SingleResponseblity3 {
public static void main(String[] args) {
Vehicle2 vehicle2=new Vehicle2();
vehicle2.run("汽车");
vehicle2.runAir("飞机");
vehicle2.runWater("轮船");
}
}
class Vehicle2 {
public void run(String vehicle) {
System.out.println(vehicle + "在公路上疾驰.................");
}
public void runWater(String vehicle) {
System.out.println(vehicle + "在水中疾驰.................");
}
public void runAir(String vehicle) {
System.out.println(vehicle + "在空中疾驰.................");
}
}
第三种示例虽未在类上遵守单一职责原则,但是在方法上遵守了单一职责原则,但是这种写法仅限于方法比较少及简单的类。
单一职责原则总结
1)一个类只负责一项职能,降低了类的复杂度
2)提高了类的可读性及可维护性
3)降低变更引起的风险
4)通常情况下我们都要遵守单一职责原则,但是在逻辑简单的类中,可在方法层遵守单一职责原则(复杂拆类,简单拆方法)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?