设计模式——(二)设计模式原则___单一职责原则

本文深入探讨了设计模式的七大核心原则,包括单一职责、接口隔离、依赖倒置等,通过实例解析每个原则的重要性及应用,帮助提升软件设计水平。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计模式原则综述

设计模式原则,顾名思义,就是在程序设计中应当遵守的原则,也是各种设计模式的基础。

设计模式常用的七大原则有:
1)单一职责原则
2)接口隔离原则
3)依赖倒置原则
4)里氏替换原则
5)开闭原则
6)迪米特法则
7)合成复用原则

本系列将分别对这些原则进行介绍。

单一职责原则

一、定义

单一职责原则(Single Responsibility Principle, SRP)
有且仅有一个原因引起类的变更

二、背景

在程序设计中,我们可能遇到这样的情况:
类T负责两个不同的职责:职责P1、P2。
在设计过程中,假设职责P1需求发生变化,
当由于职责P1需求发生改变而需要修改类T时,
就有可能会导致原本运行正常的职责P2功能发生故障。
也就是说,我们应该分别建立两个类T1、T2,使T1完成职责P1的需求,T2完成职责P2的需求。
这样,当修改类T1时,不会使职责P2发生故障;同理,当修改T2时,也不会使职责P1发生故障。

三、例子

假设我们需要实现一个让交通工具进行运行的程序。

public class SingleResponsibillity {
	public static void main(String[] args) {
		Vehicle vehicle = new Vehicle();
		vehicle.run("motobike");
		vehicle.run("car");
		vehicle.run("plane");
	}
}


class Vehicle{
	public void run(String vehicle) {
		System.out.println(vehicle + "is running in the street");
	}
}

运行结果如下
在这里插入图片描述
这里就出现了问题:
motobike和car确实能在马路上跑,但是按照我们的常识可知,plane一般不会run in the street,当客户端上线后,我们的程序员发现了这个问题,怎么改呢?

如果我们还是使用唯一的类来实现,虽然也能够通过一系列的条件判断来决定run的方式,但是未免太过麻烦了。
我们知道,摩托车、汽车和飞机、轮船这些交通工具,运行的场景、方式并不相同。因此我们把不同方式的类进行细分。

我们这里通过不同的对vehicle接口的实现来完成细分。

public interface Vehicle {
	public void run(String vehicle);
}

public class SingleResponsibillity {
	public static void main(String[] args) {
		Vehicle VehicleDriver = new LandVehicle();
		VehicleDriver.run("motobike");
		VehicleDriver.run("car");
		VehicleDriver = new AirVehicle();
		VehicleDriver.run("plane");
	}
}


class LandVehicle implements Vehicle {
	public void run(String vehicle) {
		System.out.println(vehicle + " is running in the street");
	}
}


class SeaVehicle implements Vehicle{
	public void run(String vehicle) {
		System.out.println(vehicle + "is acrossing the sea ");
	}
}

class AirVehicle implements Vehicle{
	public void run(String vehicle) {
		System.out.println(vehicle + " is flying in the air");
	}
}

这样,在我们需要修改任何一种运输工具的运行方式实现的时候,我们只需要修改各自的类而无需进行大面积的修改。

四、总结

遵循单一职责原的优点有:

可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
提高类的可读性,提高系统的可维护性;
变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值