架构整洁之道-04 设计原则-单一职责SRP

简介: 架构设计原则主要作用是让我们明确如何在类中安排我们的程序和数据结构,以及这些类之间的关系应该如何建立。SOLID原则的目标是创建中层软件架构,满足:容忍改变、易于理解、基础组件可以用在多个软件系统中。

架构设计原则主要作用是让我们明确如何在类中安排我们的程序和数据结构,以及这些类之间的关系应该如何建立。SOLID原则的目标是创建中层软件架构,满足:容忍改变、易于理解、基础组件可以用在多个软件系统中。

单一职责

单一职责原理(Single Responsibility Principle,SRP),单一功能职责。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。即,一个模块有且只能对一个角色负责。

单一职责原则的核心是控制类的粒度大小,将对象解偶,提高其内聚性。

  • 降低类的复杂度。一个类只负责一个职责比负责多项职责要简单得多
  • 提高可读性。复杂度降低,可读性自然就提高了
  • 提高系统的维护性。可读性提高,并且修改一项职责对其他职责影响降低类,就更容易维护
  • 变更引起的风险降低。单一职责如果遇到变更则影响范围也会更小

比如,Phone接口,我们仅对其支持打电话,听音乐,发信息,更换手机壳。更换手机壳功能,这个不应该属于Phone的职责,其更多依赖外部操作去更换。

class Phone  {
    makeCall(){ }
    listenMusic(){ }
    sendMessage(msg:Message) { }
    changeCover() { }
}

为了避免出现因修改一个功能导致其他的功能发生故障,解决方法就是遵循单一职责模式。单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则。

什么情况会破坏SRP

  • 类的依赖太多
  • 方法有提阿多参数
  • 测试类变得复杂
  • 在一个地方改动影响另外地方
目录
相关文章
|
6天前
|
前端开发 Java 测试技术
使用整洁架构优化你的 Gradle Module
使用整洁架构优化你的 Gradle Module
44 0
|
7月前
|
存储 Go 数据处理
Go 语言整洁架构实践
Go 语言整洁架构实践
56 0
|
3天前
|
运维 架构师 安全
架构师养成手册:架构师职责
小米是一名热情的技术爱好者和架构师,他探讨了架构师的角色和职责。主要涉及六个方面:顶层设计,需与企业战略目标对齐,制定架构原则;规划可适应未来变化的企业架构,分析需求并关注技术趋势;全局视角制定可落地的架构方案,兼顾全局与局部优化;技术选型与难题解决,选择合适技术并解决实际问题;关注方案与代码的广度与深度,确保宏观设计与微观实现的统一;同时,架构师还需具备管理能力,包括团队协作、资源调配和风险管理。
20 11
|
8月前
|
存储 数据库 开发者
单元化架构的设计原则:让开发者、组件和数据都能透明化,同时保证业务可分片和业务自包含。
单元化架构的设计原则:让开发者、组件和数据都能透明化,同时保证业务可分片和业务自包含。
|
9月前
|
设计模式 关系型数据库
软件架构设计原则之里氏替换原则
里氏替换原则(Liskov Substitution Principle,LSP)是指如果对每一个类型为T1的对象o1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都替换成O2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。
57 0
|
9月前
|
设计模式 关系型数据库
软件架构设计原则之迪米特法则
迪米特原则(Law of Demeter LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合度。迪米特原则主要强调:只和朋友交流,不和陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以称为成员朋友类,而出现在方法体内部的类不属于朋友类。
71 1
|
11月前
|
安全
带你读《阿里云卓越架构白皮书》——1、安全设计原则(1)
带你读《阿里云卓越架构白皮书》——1、安全设计原则(1)
395 0
|
11月前
|
安全
带你读《阿里云卓越架构白皮书》——1、安全设计原则(2)
带你读《阿里云卓越架构白皮书》——1、安全设计原则(2)
364 0
|
11月前
带你读《阿里云卓越架构白皮书》——2、设计原则
带你读《阿里云卓越架构白皮书》——2、设计原则
291 0
|
11月前
带你读《阿里云卓越架构白皮书》——1、设计原则
带你读《阿里云卓越架构白皮书》——1、设计原则
248 0