关注点分离(Separation of concerns, SoC)
关注点分离(Separation of concerns,SOC)是对只与“特定概念、目标”(关注点)相关联的软件组成部分进行“标识、封装和操纵”的能力,即标识、封装和操纵关注点的能力。
是处理复杂性的一个原则。由于关注点混杂在一起会导致复杂性大大增加,所以能够把不同的关注点分离开来,分别处理就是处理复杂性的一个原则,一种方法。
关注点分离是面向方面的程序设计的核心概念。分离关注点使得解决特定领域问题的代码从业务逻辑中独立出来。
业务逻辑的代码中不再含有针对特定领域问题代码的调用(将针对特定领域问题代码抽象化成较少的程式码,例如将代码封装成function或是class),业务逻辑同特定领域问题的关系通过侧面来封装、维护,这样原本分散在整个应用程序中的变动就可以很好的管理起来。
好的架构设计必须把变化点错落有致地封装到软件系统的不同部分。要做到这一点,必须进行关注点分离。
好的架构必须使每个关注点相互分离,也就是说系统中的一个部分发生了变化,不会影响其他部分。
即使需要改变,也能够清晰地识别出那些部分需要改变。
如果需要扩展架构,影响将会最小化,已经可以工作的每个部分都将继续工作。
“系统中的一个部分发生了变化,不会影响其他部分。”
“即使需要改变,也能够清晰地识别出那些部分需要改变。”
“如果需要扩展架构,将影响最小化,已经可以工作的每个部分都将继续工作。”
关注点分离原则不仅体现在问题求解、算法设计、软件设计等设计方法中,同时也体现在软件开发过程、软件项目管理以及软件开发方法学等诸多方。
在某种意义上,正是对软件开发不同关注点的分离视角和关注重点的差别,导致了软件开发技术和开发方法的演变和发展。
关注点分离(Separation of concerns, SoC)相关推荐
- 关注点分离与单一职责
关注点分离(separation of concerns,SOC)是对只与"特定概念.目标"(关注点)相关联的软件组成部分进行"标识.封装和操纵"的能力,即标识 ...
- 【软件架构】4+2 Layered Architecture 4+2分层架构:软件架构中的关注点分离
目录 4+2 Layered Architecture 4+2分层架构 Separation of Concerns Applied to Software Architecture软件架构中的关注点 ...
- 社区首款 OAM 可视化平台发布!关注点分离、用户友好、上手难度低
作者 | 徐运元,杭州谐云科技合伙人及资深架构师,云计算行业和 Kubernetes 生态资深从业者 **导读:**什么是 OAM?2019 年 10 月 17 日,阿里巴巴合伙人.阿里云智能基础产品 ...
- 应用题分析思路--关注点分离
应用题分析思路–关注点分离 @(概率论) 在求解应用型概率题时,常常会因为模型尚未建立,关注点放在了概率求解上,二者交织在一起就很难厘清问题,因此拿出来强调一下. 一商店经销某种商品,每周进货量X与顾 ...
- 关注点分离之RestTemplate的错误处理
作者:JackieTang 来源:生活点亮技术 1. 概览 在这个简短的教程中,将讨论如何实现一个自定义ResponseErrorHandler类并将其注入到RestTemplate实例中去,这样我们 ...
- python的设计模式之MVC模式
模型-视图-控制器模式 关注点分离(Separation of Concerns,SoC)原则是软件工程相关的设计原则之一.SoC原则背后的思想是将一个应用切分成不同的部分,每个部分解决一个单独的关注 ...
- 随输入动态改变ui_深入详解 Jetpack Compose | 优化 UI 构建
人们对于 UI 开发的预期已经不同往昔.现如今,为了满足用户的需求,我们构建的应用必须包含完善的用户界面,其中必然包括动画 (animation) 和动效 (motion),这些诉求在 UI 工具包创 ...
- Java架构师Day02-源码分析之Spring5
Spring 5 基本概念 Spring的XML解析原理 Spring的Bean实例化原理 Spring表达式语言SpEL 赋予属性字面值 引用Bean和属性和方法 计算表达式的值 匹配正则表达式 B ...
- Think In Java | 01 面向对象
Java | 面向对象 文章目录 Java | 面向对象 导论 抽象 对象的抽象 类的抽象 面向对象的基本特征 封装 类的访问权限控制 类的组合和聚合 继承 继承的基本形式 单根继承结构 多态 对象的 ...
- 分层结构的生活例子_详解软件分层架构设计、工作原理、实例以及具体架构
概述 今天的内容主要来自<软件架构模式>第一章,觉得还不错,所以分享给大家. 分层架构 分层架构是一种很常见的架构模式,它也叫N层架构.这种架构是大多数Jave EE应用的实际标准,因此很 ...
最新文章
- 人民日报三问人工智能,给法律制度带来哪些挑战?
- 一道算法题,求更好的解法
- java string转enum_java枚举类Enum方法简介(valueof,value,ordinal) (转)
- SVM学习(四):为何需要核函数
- 机器人瓦力 配乐_《WALL-E》机器人小王子
- Promise.allSettled
- BigDecimal四舍五入与保留位
- 前端学习(3232):高阶函数函数柯里化
- 数组拼接时中间怎么加入空格_【题解二维数组】1123:图像相似度
- apt-get命令_DBATools中的Get-DbaHelpIndex命令
- 二分法猜数计算机代码,求代码!!! 你输入一个1到1000内的数 随后电脑猜10次 好象要用什么二分法...
- 【SimpleITK】使用区域生长法/种子填充法/形态学分割肺-CT img
- JavaScript引入的三种方式(附实例)
- 深度学习落地项目 呼叫中心系统
- matlab ode 实数,关于ode45中erf函数(输入必须为实数完全数的报错问题)
- LAMP架设论坛空间
- FMC子卡模块学习资料:FMC160-两路14位400Msps AD,两路16位400Msps DA FMC子卡模块
- 小程序前端获取手机号码
- ArtWork+并查集二维
- A Game of Thrones(101)
热门文章
- lol最新聊天服务器断开,lol聊天服务器断开 英雄联盟聊天服务器连不上解决办法...
- lol无法连接服务器win10系统,win10系统中lol无法连接服务器怎么办
- win下安装nessus
- 学习电商的第一个业务,发票管理,发票作废(发票作废为重)
- win10怎么修改计算机用户名和密码,windows10系统如何更改开机密码
- clean crxmouse gestures 3.4.2 版本在 Chrome 98.0.4758.102(正式版本),ubuntu 20.04系统上使用时会导致鼠标右键失灵
- 配置 Maven 阿里云镜像
- 中华石杉老师课程汇总
- ctype函数_Ctype函数简介
- python flask服务器_flask应用部署到服务器