关注点分离(Separation of concerns,SOC)是对只与“特定概念、目标”(关注点)相关联的软件组成部分进行“标识、封装和操纵”的能力,即标识、封装和操纵关注点的能力。

是处理复杂性的一个原则。由于关注点混杂在一起会导致复杂性大大增加,所以能够把不同的关注点分离开来,分别处理就是处理复杂性的一个原则,一种方法。

关注点分离是面向方面的程序设计的核心概念。分离关注点使得解决特定领域问题的代码从业务逻辑中独立出来。

业务逻辑的代码中不再含有针对特定领域问题代码的调用(将针对特定领域问题代码抽象化成较少的程式码,例如将代码封装成function或是class),业务逻辑同特定领域问题的关系通过侧面来封装、维护,这样原本分散在整个应用程序中的变动就可以很好的管理起来。

好的架构设计必须把变化点错落有致地封装到软件系统的不同部分。要做到这一点,必须进行关注点分离。
好的架构必须使每个关注点相互分离,也就是说系统中的一个部分发生了变化,不会影响其他部分。
即使需要改变,也能够清晰地识别出那些部分需要改变。
如果需要扩展架构,影响将会最小化,已经可以工作的每个部分都将继续工作。

“系统中的一个部分发生了变化,不会影响其他部分。”
“即使需要改变,也能够清晰地识别出那些部分需要改变。”
“如果需要扩展架构,将影响最小化,已经可以工作的每个部分都将继续工作。”


关注点分离原则不仅体现在问题求解、算法设计、软件设计等设计方法中,同时也体现在软件开发过程、软件项目管理以及软件开发方法学等诸多方。

在某种意义上,正是对软件开发不同关注点的分离视角和关注重点的差别,导致了软件开发技术和开发方法的演变和发展。

关注点分离(Separation of concerns, SoC)相关推荐

  1. 关注点分离与单一职责

    关注点分离(separation of concerns,SOC)是对只与"特定概念.目标"(关注点)相关联的软件组成部分进行"标识.封装和操纵"的能力,即标识 ...

  2. 【软件架构】4+2 Layered Architecture 4+2分层架构:软件架构中的关注点分离

    目录 4+2 Layered Architecture 4+2分层架构 Separation of Concerns Applied to Software Architecture软件架构中的关注点 ...

  3. 社区首款 OAM 可视化平台发布!关注点分离、用户友好、上手难度低

    作者 | 徐运元,杭州谐云科技合伙人及资深架构师,云计算行业和 Kubernetes 生态资深从业者 **导读:**什么是 OAM?2019 年 10 月 17 日,阿里巴巴合伙人.阿里云智能基础产品 ...

  4. 应用题分析思路--关注点分离

    应用题分析思路–关注点分离 @(概率论) 在求解应用型概率题时,常常会因为模型尚未建立,关注点放在了概率求解上,二者交织在一起就很难厘清问题,因此拿出来强调一下. 一商店经销某种商品,每周进货量X与顾 ...

  5. 关注点分离之RestTemplate的错误处理

    作者:JackieTang 来源:生活点亮技术 1. 概览 在这个简短的教程中,将讨论如何实现一个自定义ResponseErrorHandler类并将其注入到RestTemplate实例中去,这样我们 ...

  6. python的设计模式之MVC模式

    模型-视图-控制器模式 关注点分离(Separation of Concerns,SoC)原则是软件工程相关的设计原则之一.SoC原则背后的思想是将一个应用切分成不同的部分,每个部分解决一个单独的关注 ...

  7. 随输入动态改变ui_深入详解 Jetpack Compose | 优化 UI 构建

    人们对于 UI 开发的预期已经不同往昔.现如今,为了满足用户的需求,我们构建的应用必须包含完善的用户界面,其中必然包括动画 (animation) 和动效 (motion),这些诉求在 UI 工具包创 ...

  8. Java架构师Day02-源码分析之Spring5

    Spring 5 基本概念 Spring的XML解析原理 Spring的Bean实例化原理 Spring表达式语言SpEL 赋予属性字面值 引用Bean和属性和方法 计算表达式的值 匹配正则表达式 B ...

  9. Think In Java | 01 面向对象

    Java | 面向对象 文章目录 Java | 面向对象 导论 抽象 对象的抽象 类的抽象 面向对象的基本特征 封装 类的访问权限控制 类的组合和聚合 继承 继承的基本形式 单根继承结构 多态 对象的 ...

  10. 分层结构的生活例子_详解软件分层架构设计、工作原理、实例以及具体架构

    概述 今天的内容主要来自<软件架构模式>第一章,觉得还不错,所以分享给大家. 分层架构 分层架构是一种很常见的架构模式,它也叫N层架构.这种架构是大多数Jave EE应用的实际标准,因此很 ...

最新文章

  1. 人民日报三问人工智能,给法律制度带来哪些挑战?
  2. 一道算法题,求更好的解法
  3. java string转enum_java枚举类Enum方法简介(valueof,value,ordinal) (转)
  4. SVM学习(四):为何需要核函数
  5. 机器人瓦力 配乐_《WALL-E》机器人小王子
  6. Promise.allSettled
  7. BigDecimal四舍五入与保留位
  8. 前端学习(3232):高阶函数函数柯里化
  9. 数组拼接时中间怎么加入空格_【题解二维数组】1123:图像相似度
  10. apt-get命令_DBATools中的Get-DbaHelpIndex命令
  11. 二分法猜数计算机代码,求代码!!! 你输入一个1到1000内的数 随后电脑猜10次 好象要用什么二分法...
  12. 【SimpleITK】使用区域生长法/种子填充法/形态学分割肺-CT img
  13. JavaScript引入的三种方式(附实例)
  14. 深度学习落地项目 呼叫中心系统
  15. matlab ode 实数,关于ode45中erf函数(输入必须为实数完全数的报错问题)
  16. LAMP架设论坛空间
  17. FMC子卡模块学习资料:FMC160-两路14位400Msps AD,两路16位400Msps DA FMC子卡模块
  18. 小程序前端获取手机号码
  19. ArtWork+并查集二维
  20. A Game of Thrones(101)

热门文章

  1. lol最新聊天服务器断开,lol聊天服务器断开 英雄联盟聊天服务器连不上解决办法...
  2. lol无法连接服务器win10系统,win10系统中lol无法连接服务器怎么办
  3. win下安装nessus
  4. 学习电商的第一个业务,发票管理,发票作废(发票作废为重)
  5. win10怎么修改计算机用户名和密码,windows10系统如何更改开机密码
  6. clean crxmouse gestures 3.4.2 版本在 Chrome 98.0.4758.102(正式版本),ubuntu 20.04系统上使用时会导致鼠标右键失灵
  7. 配置 Maven 阿里云镜像
  8. 中华石杉老师课程汇总
  9. ctype函数_Ctype函数简介
  10. python flask服务器_flask应用部署到服务器