设计模式—— 单一职责原则

发布于:2023-08-24 ⋅ 阅读:(52) ⋅ 点赞:(0)

设计模式的目的

1,代码重用性(即:相同功能的代码,不用多次编写)

2,可读性(即:编程规范性,便于其他程序员的阅读和理解)

3,可扩展性(当需要增加新的功能时,非常的方便,称为可维护性)

4,可靠性(即:当我们增加新的功能时,对原来的功能没有影响)

5,使程序呈现高内聚,低耦合的特性

设计模式原则

设计模式常用的七大原则有:

  1. 单一职责原则
  2. 接口隔离原则
  3. 依赖倒转(倒置)原则
  4. 里氏替换原则
  5. 开闭原则
  6. 迪米特法则
  7. 合成复用原则

单一职责原则

基本介绍

对类来说的,即一个类应该只负责一项职责。如类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 A1,A2

应用实例

以交通工具案例讲解

方案1:

public class Singleresponsibility1 {
	public static void main(String[] args) {
		
		Vehicle vehicle = new Vehicle();
		vehicle.run("摩托车");
		vehicle.run("小汽车");
		vehicle.run("飞机");
	}
}

//交通工具类

//方式1
//1.在方式1的 run方法中,违反了单一职责
//2.解决的方案非常简单,根据交通运行的方式不同,分解成不同的类即可

class Vehicle{
	
	public void run(String vehicle) {
		System.out.println(vehicle + "在公路上运行......");
	}
}

//飞机?如何在公路中运行的??

方案2:

public class Singleresponsibility2 {
	public static void main(String[] args) {
		
		
		RoadVehicle roadVehicle = new RoadVehicle();
		roadVehicle.run("摩托车");
		roadVehicle.run("汽车");
		
		AirVehicle airVehicle = new AirVehicle();
		airVehicle.run("飞机");
	}
}


//方案2的分析
//1.遵守单一职责原则
//2.但是这样做的改动很大,即将类分解,同时修改客户端
//3.改进:直接修改 Vehicle ,改动的代码会比较少 => 引出方案3

class RoadVehicle {

	public void run(String vehicle) {
		System.out.println(vehicle + "公路运行....");
	}
}

class AirVehicle {
	public void run(String vehicle) {
		System.out.println(vehicle + "天空运行....");
	}
}

class WaterVehicle {
	public void run(String vehicle) {
		System.out.println(vehicle + "水中运行....");
	}
}

多次创建类名,也会增加系统负担

方案3:

public class Singleresponsibility3 {
	public static void main(String[] args) {
			
		Vehicle2 vehicle2 = new Vehicle2();
		vehicle2.run("汽车");
		vehicle2.runWater("轮船");
		vehicle2.runAir("飞机");
	}	
}

//方式3的分析
//1.这种修改的方法没有对原来的类做大的修改,只是增加方法
//2.这里虽然没有在类的这个级别上遵守单一职责原则,但是在方法的级别上,仍然遵守了单一原则

class Vehicle2{
	
	public void run(String vehicle) {
		System.out.println(vehicle + "在公路上运行......");
	}
	
	public void runAir(String vehicle) {
		System.out.println(vehicle + "在天空上运行......");
	}
	
	
	public void runWater(String vehicle) {
		System.out.println(vehicle + "在水中上运行......");
	}
}

单一职责原则注意事项和细节

  1. 降低类的复杂度,一个类只负责一项职责。
  2. 提高类的可读性,可维护性
  3. 降低变更引起的风险
  4. 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则

网站公告

今日签到

点亮在社区的每一天
去签到