设计模式之美-设计原则-单一职责原则

单一职责原则(SRP)

单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP。英文描述:A class or module should have a single reponsibility,也就是:一个类或者模块只负责完成一个职责(或者功能)。

一个是类(class),一个是模块(module)。一种理解是:把模块看作比类更加抽象的概念,类也可以看作模块。另一种理解是:把模块看作比类更加粗粒度的代码块,模块中包含多个类,多个类组成一个模块。

单一职责原则也就是一个类只负责完成一个职责或者功能,尽量不要设计大而全的类,要设计粒度小、功能单一的类。

实际设计过程中我们可以先写一个粗粒度的类,满足业务需求。随着业务的发展,如果粗粒度的类越来越庞大,代码越来越多,这个时候,我们就可以将这个粗粒度的类,拆分成几个更细粒度的类。这就是所谓的持续重构

是否拆分的设计参考方向:

  • 类中的代码行数、函数或属性过多,会影响代码的可读性和可维护性,我们就需要考虑对类进行拆分;

  • 类依赖的其他类过多,或者依赖类的其他类过多,不符合高内聚、低耦合的设计思想,我们就需要考虑对类进行拆分;

  • 私有方法过多,我们就要考虑能否将私有方法独立到新的类中,设置为 public 方法,供更多的类使用,从而提高代码的复用性;

  • 比较难给类起一个合适名字,很难用一个业务名词概括,或者只能用一些笼统的Manager、Context 之类的词语来命名,这就说明类的职责定义得可能不够清晰,需要拆分;

  • 类中大量的方法都是集中操作类中的某几个属性,就需要考虑拆分;

并不是所有的类都是拆分的越细越好,单一职责的原则主要是减少代码的耦合性,减少类与类之间的依赖,但是拆分过细,实际上可能会适得其反,使得代码可维护性变低。从而背离了单一职责原则中高内聚,低耦合的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值