设计模式的七大原则之“单一职责”

前言:在设计模式中,对于类来说,一个类应该只负责一类或一项职责。如user类负责与用户相关的登录注册等职责。这就是单一职责原则

那么单一职责原则具体是什么?我们通过对比遵守这一原则前后的程序就能有更清晰的认识!

首先我们不管单一职责原则,先写一个交通交通工具类,这个交通工具类有个run方法描述为在公路上跑。

class Transport{
	public void run(String transport){
		System.out.println(transport + "在公路上跑...");
	}
}

那么我们创建好一个工具类实例时,就可以调用实例的run方法,并往参数中传入各种能在公路上跑的具体交通工具,可能就有人疑问,难道飞机,轮船不算交通工具吗?我往参数里传入这些会怎样?好吧,我们就传进去看一下效果。

public class SinglePonsibility1 {
	public static void main(String[] args) {
		Vehicle1 vehicle = new Vehicle1();
		vehicle.run("汽车");
		vehicle.run("飞机");
		vehicle.run("轮船");
	}
}

运行结果:
在这里插入图片描述
这显然不对,我们知道交通工具有很多,然而它却只给所有交通工具提供了一个“在公路上跑”的方法。所以我们应该将交通工具进行分类(我这里分陆,海,空三类),然后每个类负责一类或一项职责。

class Land{
	public void run(String land){
		System.out.println(land + "在路上跑...");
	}
}

class Air{
	public void flay(String air){
		System.out.println(air + "在天上飞...");
	}
}

class Sea{
	public void voyage(String sea){
		System.out.println(sea + "在水上游...");
	}
}

再根据交通工具的类别自由选择创建对象,传入具体工具

public class SinglePonsibility2 {
	public static void main(String[] args) {
		Land land = new Land();
		land.run("汽车");
		
		Air air = new Air();
		air.flay("飞机");
		
		Sea sea = new Sea();
		sea.voyage("轮船");
	}
}

运行结果:
在这里插入图片描述
这个结果显然就很合理了!这就是我们的程序在“类”这个级别上遵守“单一职责”原则的好处。可能有人又疑惑,除了在“类”上遵守单一职责原则,还能在哪个级别上遵守?我们接着来看!将原始的工具类中添加各种方法,而是不分类。

class Transport{
	public void runLand(String transport){
		System.out.println(transport + "在路上跑...");
	}
	
	public void runAir(String transport){
		System.out.println(transport + "在天上飞...");
	}
	
	public void runSea(String transport){
		System.out.println(transport + "在水上游...");
	}
}

根据交通工具类别选择不同交通方式

public class SinglePonsibility3 {
	public static void main(String[] args) {
		Transport transport= new transport();
		transport.runLand("汽车");
		transport.runAir("飞机");
		transport.runSea("轮船");
	}
}

运行结果:
在这里插入图片描述
可以看到我们没有将交通工具分类,而是针对不同类别的交通工具给出不同运行方法,也能实现效果,这就是在“方法”这个级别上遵守“单一职责”原则。

那么我们究竟应该在类上遵守单一职责原则呢?还是应该在方法上遵守?其实两种遵守方式各有优缺点

在类上遵守单一职责原则,我们就需要将大类拆分为数个小类,这样程序稳定性更好,但如果小类数量较多,那么在程运行过程中可能就会创建多个类,创建的类数量多则开销加大!

在方法上遵守单一职责原则,程序运行时不需要创建很多类,但如果一个类中方法过多,则程序将变复杂。

所以在类上遵守单一职责原则还是在方法上遵守单一职责原则,需要我们在实际使用过程中根据情况而定!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值