加载中...
单一职责原则是面向对象设计原则之一,由罗伯特·马丁提出。它主张一个类或模块应当只有一个引起它变化的原因,即只承担一项职责,从而降低耦合、提高内聚,使代码更易于维护和复用。

| 中文名 | 单一职责原则 |
| 外文名 | Single Responsibility Principle |
| 推广者 | 罗伯特·马丁 |
| 所属 | 面向对象设计原则 |
| 核心 | 一个变化原因 |
单一职责原则是面向对象设计原则集合中的第一条,由软件工程师罗伯特·马丁(Robert C. Martin)系统阐述并推广。它的经典表述是:一个类应当只有一个引起它发生变化的原因。
这里所说的职责,可以理解为一类会导致代码需要修改的变更来源。如果一个类同时承担了多项职责,那么任何一项职责的需求变动都可能迫使这个类被修改,不同职责之间也会相互牵连,造成脆弱且难以维护的设计。将职责拆分开来,能让每个类专注于单一目标。
一个常见反例是把数据的业务计算、持久化存储、日志记录和界面展示都塞进同一个类。按照单一职责原则,应将其拆分为业务逻辑、数据访问、日志、展示等独立组件。这样,更换数据库不会影响业务规则,调整界面也不会牵动存储逻辑。分层架构、领域驱动设计中的职责划分,都是该原则的体现。
问:一个类只能有一个方法吗?答:并非如此,单一职责针对的是引起变化的原因而非方法数量。一个类可以有多个方法,只要它们都服务于同一职责、因同一类原因而变化即可。
问:过度拆分会有问题吗?答:会。若把职责切得过细,会产生大量琐碎的小类,增加协作与理解成本。应在职责清晰与结构简洁之间取得平衡,避免为了拆分而拆分。

| 中文名 | 单一职责原则 |
| 外文名 | Single Responsibility Principle |
| 推广者 | 罗伯特·马丁 |
| 所属 | 面向对象设计原则 |
| 核心 | 一个变化原因 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧