设计模式之禅——六大原则(单一职责原则)

设计模式之单一职责原则 Single Responsibility Principle 简称SRP
定义:应该有且仅有一个原因引起类的变更
用户管理类的接口:
在这里插入图片描述
(该接口设计存在问题,用户的属性和用户的行为没有分开,这是一个严重的错误。我们应该吧用户的信息抽取成一个BO(Bussiness Object,业务对象),把用户的信息抽取成一个Biz(Business Logic, 业务逻辑),如下图所示)
在这里插入图片描述
使用时,要获得用户信息的,就当是IUserBO的实现类,要是希望维护用户信息,就把它当成IUserBiz的实现类。

在实际使用中,我们更倾向于使用两个不同的类或接口:一个是IUserBO,一个是IUserBO,类图如下:
在这里插入图片描述

单一职责原则的应用:
电话通话时会有四个过程:拨号、通话、回应、挂机,那我们写一个接口,类图如下:
在这里插入图片描述
现在可以很容易的根据单一职责原则说它设计的有问题:这个接口拥有两个职责:一个是协议管理(dial()和hangup(),分别实现拨号和挂机),一个是数据传送(模拟信号的传递),那我们将其根据单一职责原则重新设计,又这两种职责的变化不互相影响,则:
在这里插入图片描述

单一职责原则的优点:

  • 类的复杂性降低,实现什么职责都有明确的定义
  • 代码的可读性提高
  • 可维护性提高
  • 变更引起的风险降低,变更时必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的拓展性、维护性都有极大的帮助。

单一职责不仅适用于接口、类,同时也适用于方法。即一个方法尽可能的做一个事情,像下面的这个方法就不可取:
在这里插入图片描述

正确做法是
在这里插入图片描述

对于单一职责原则,接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值