网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月22日漏签0天
包尔老师的软件课程吧 关注:124贴子:2,840
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 3 4 下一页 尾页
  • 58回复贴,共4页
  • ,跳到 页  
<<返回包尔老师的...吧
>0< 加载中...

软件体系结构课程 | 4 设计原则 | 4.8 包耦合原则

  • 只看楼主
  • 收藏

  • 回复
  • 包尔老师
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不同的包的关联程度要尽量低,包含三个原则:
1 无环依赖原则:这样构建一个图,让每一个包对应一个图的节点,一个包依赖于另一个包就给相应的节点之间连一条有向边。因此,如果这个图有环,那么修改环上的任意一个包,都会影响到其它包,说明包之间的依赖关系比较高,需要想办法去掉图中的环。一个办法是包级别的依赖反转原则,反转环的一条边即可。
2 稳定依赖原则:如果一个包被多个包依赖,并且它自身依赖于很少的包,那么它就是稳定的,不容易受到其他包影响;反之,它就是不稳定的,容易受到其他包影响。因此,如果一个包依赖于另一个包,那么前者应该相对不稳定,后者应该相对稳定,这样它们之间才不容易相互影响,也就是依赖关系才比较低。
3 稳定抽象原则:如果一个包包含多个抽象类,它的抽象度就高;反之,它的抽象度就不高。如果一个包依赖于另一个包,并且依赖关系源自包里面类的继承关系,那么前者应该抽象度低,后者应该抽象度高,而根据稳定依赖原则,前者应该相对不稳定,后者应该相对稳定。因此,抽象度低的包应该是不稳定的,抽象度高的包应该是稳定的。


  • 夏天的雨夹雪
  • 活跃吧友
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
三个耦合:保证不同的包耦合度低
(1)无环依赖原则
要去掉包图依赖关系里面出现的“环状”依赖关系
1、有环就相当于包依赖程度高:
有环上下游都影响,一个改了,全改一遍。没环上游包受到影响,下游包不受到影响
2、去掉环就相当于一定程度上解决早晚综合症问题:
提交我自己的不会影响别人的包,不同人提交的东西影响程度越小。
3、怎么去掉环?
两种方法:
①遵循依赖倒置原则进行设计,引入接口进行解耦
②创建新的包,供形成环的包依赖使用,以消除环
(2)稳定依赖原则
1.包图里面,包与包依赖的路径,应该是上游的依赖了很多包的包应该是不稳定的。往下游走包越来越稳定。
原因:
多个包依赖于一个包,所以被依赖的包应该稳定一下,否则一直修改,很多包都要受到影响,使得系统不稳定。
2.没有X包,最底层的X包不依赖于其他的包,他不受到其他的包的影响,所以她本身就相对稳定。
3.不稳定的包:1.没有其他的包依赖于它,它可以随便变,不会影响到别的包。2.依赖于底层的很多的包,所以任何底层包有变化都会影响到Y所以Y不稳定。
4.量化一个包的不稳定度的公式:
不稳定度 = 包里所有类的出度之和/包里所有类的出度之和+包里所有类的入度之和
如果稳定的包依赖不稳定的包,即不符合稳定依赖原则,那么使用依赖反转原则改变依赖方向,使之符合稳定依赖原则
(3)稳定抽象原则
1.稳定抽象原则:一个稳定的包应该是抽象的包,一个不稳定的包应该是一个不抽象的包
2.这是一个将“稳定和不稳定”与“抽象”相结合的原则。
3.先理解“抽象的包”这个概念:一个包里面包含的抽象类越多,这个包就越抽象;反之,这个包就越不抽象。即:抽象类占的比例越高,那么包就越抽象
4.量化包抽象程度的公式
抽象程度 = 抽象类的个数/抽象类的个数+具体类个数
5.举例:父类的包应该是稳定的,所以应该是一个抽象的包。子类可以是一个不抽象的包。


2025-05-22 06:17:18
广告
  • 影雁也疯狂
  • 活跃吧友
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

1.稳定依赖原则:
在包图里面,看依赖的路径
上游依赖很多个包的这个包是不稳定的,越往下走越稳定
2.稳定度的衡量:
•Ce: Efferent Couplings(包里面类的出度之和)
•Ca: Afferent Couplings(包里面类的入度之和)
•I= Ce / (Ca + Ce): Instability(I为不稳定度)
一个包的不稳定度=包里所有类的出度之和/(包里所有类的出度之和+包里所有类的入度之和)
3.去掉环的方法:
两种方法:
①遵循依赖倒置原则进行设计,引入接口进行解耦
②创建新的包,供形成环的包依赖使用,以消除环


  • 阿楠Scone
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 小糖丸医生
  • 活跃吧友
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
包的耦合性原则一、无环依赖原则(ADP - The Acyclic Dependencies Principle )
在包的依赖关系图中不允许存在环。
解除依赖环的方法
1. 使用依赖倒置原则。
2. 创建一个新包,把共同依赖的类移动到新包里面。
二、稳定依赖原则(SDP - The Stable-Dependencies Principle )
朝着稳定的方向进行依赖
稳定性和更改所需要的工作量有关。
包稳定性度量
一种方式是计算进、出该包的依赖关系的数目。我们可以使用这些来数值计算该包的位置稳定性。
· Ca输入耦合度:指处于该包的外部并依赖于该包内的类的类的数目。
· Ce输出耦合度:指处于该包的内部并依赖于该包外的类的类的数目。
· 不稳定性I:I = Ce / (Ca + Ce)
该度量的取值范围是[0, 1]。
当一个包的I度量值为1时,就意味着没有任何其他的包依赖于该包(Ca=0),而该包依赖于其他的包(Ce > 0)。这是一个包最不稳定的状态;它是不承担责任并且有依赖性的。因为没有包依赖于它,所以它就没有不改变理由,而它所依赖的包会给它提供丰富的更改理由。
另一方面,当一个包的I度量值为0时,就意味着其他包会依赖于该包(Ca > 0),但是该包却不依赖于任何其他的包(Ce=0)。它是负有责任且无依赖性的。这种包达到了最大程度的稳定性。它的依赖者使其难以更改,而且没有任何依赖关系会迫使它去改变。
SDP规定一个包的I度量值应该大于它所依赖的包的I度量值(也就是说,I度量值应该顺着依赖的方向减少)。
如果一个系统中所有的包都是最大程度稳定的,那么该系统就是不能改变的。这不是希望的情形。事实上,我们希望所设计出来的包结构中,一些包是不稳定的而另一个包是稳定的。
可改变的包位于顶部并依赖于底部稳定的包。把不稳定的包放在图的顶部是一个有用的约定,因为任何向上的箭头都意味着违反了SDP。
三、稳定抽象原则(The Stable-Abstractions Principle)
包的抽象程度应该和其稳定程序一致
该原则把包的稳定性和抽象性联系起来。它规定,一个稳定的包应该也是抽象的,这样它的稳定性就不会使其无法扩展。另一方面,它规定,一个不稳定的包应该是具体的,因为它的不稳定性使其内部的具体代码易于更改。
SAP和SDP结合在一起形成了针对包的DIP原则。这样说是准确的,因为SDP规定依赖应该朝着稳定的方向进行,而SAP则规定稳定性意味着抽象性。因为,依赖应该朝着抽象的方向进行。
包抽象度度量
A是一个测量包抽象程度的度量标准。它的值就是包中抽象类的数目和全部类的数目的比值。
· Nc- 包中类的总数
· Na- 包中抽象类的数目
· A = Na / Nc- 包的抽象性
度量A的取值范围是从0到1。0意味着包中没有任何抽象类。1意味着包中只包含抽象类。


  • 只做渣岚
  • 核心吧友
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
无环依赖原则
包之间的依赖关系不能存在环。如果存在环则表示依赖关系较强,可以考虑将环给消除。
有环说明环中的包是循环依赖的,其中一个包的修改可能环内的包都需要修改,所以依赖程度高;去掉环,前面的人代码合并到一起,后面的人再去合并,不会影响之前合并好的代码。
去掉环两种方法:
①遵循依赖反转原则进行设计,引入接口进行解耦
②创建新的包,供形成环的包依赖使用,以消除环
稳定依赖原则
不稳定的包依赖于稳定的包,按照依赖关系稳定度降低
依赖关系从不稳定的包依赖到稳定的包(稳定的包不依赖于其他包,不稳定的包依赖于很多包,可以由公式计算出不稳定性,公式为不稳定包的比例)
稳定抽象原则
包的抽象不是绝对的,取决于其所包含的抽象类的比例
一个包越稳定应该越抽象,其所包含的抽象类越多。抽象度计算公式为计算抽象类在所有类中所占比例。


  • 刘彬BJTU
  • 中级粉丝
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
包的耦合度原则:
1、无环依赖原则
在包的依赖关系图中不允许有环存在。依赖关系图中有环存在说明存在依赖关系中循环依赖,使得包之间依赖程度高,一旦这个环里面有包改变了,环里其他的包都会受到影响。
为了避免上述问题,包的依赖关系图应该是一个有向无环图,也就是不管从图中哪个包开始,沿着依赖关系走,都不会走回到起点。
如果图中有环存在那就要解除环,方法有以下两个:
(1)应用依赖导致原则,使环中的一条有向边方向反转,这样环就解除了。
(2)创建一个新的包,使环中一条边两端的包都依赖于这个新的包,这样也可以解除环。
2、稳定依赖原则
朝着稳定的方向进行依赖,这样可以确保不稳定的包依赖于稳定的包,使得不稳定的包进行修改时对其他包的影响降到最低。
稳定的包:不依赖于其他包但是由其他的包依赖于它。
不稳定的包:没有其他的包依赖于它,但是它依赖于其他的包。
包的稳定性可以用不稳定度来衡量:
不稳定度=包里面类的出度之和/(包里面类的入度之和+包里面类的出度之和)
不稳定度应该顺着依赖的方向逐渐降低。
3、稳定抽象原则
稳定的包也应该是抽象的。包的抽象程度可以用包内抽象类所占比例来衡量,包内抽象类所占比例越高,包的抽象程度就越高,包也就越稳定。
稳定的包也包含抽象类,系统通过在其他包中实现该稳定包中的抽象类来进行扩展,而该稳定包无需修改,从而在保持包的稳定的同时也保证了它的灵活性。


  • Silico
  • 活跃吧友
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
包耦合原则要求尽量降低不同包的关联程度,由此提出以下三个原则:
1.无环依赖原则:包的依赖关系图如果出现环,说明包之间存在循环依赖,如果此环中的某个包改变了,环中的其余包都会改变,因此不能出现环装依赖,最简单的方法是根据依赖反转原则解除环装依赖。
2 稳定依赖原则:包的稳定程度与自身被依赖的程度呈正相关,与自身依赖其他包的程度呈负相关。稳定的包不容易受其他包影响,因此被依赖的包应该总是稳定的。
3 稳定抽象原则:包的抽象程度与其中包含的抽象类个数呈正相关,抽象度低的包应该是不稳定的,抽象度高的包应该是稳定的。


2025-05-22 06:11:18
广告
  • 也要加油呀_
  • 活跃吧友
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
包耦合原则包括无环依赖原则、稳定依赖原则和稳定抽象原则。
无环依赖原则:包之间的依赖结构必须是一个直接的无环图形。也就是说,在依赖结构中不允许出现环即循环依赖。
两种解除依赖环的方法:
①遵循依赖倒置原则进行设计,引入接口进行解耦
②创建新的包,供形成环的包依赖使用,以消除环
稳定依赖原则:
被其他包依赖,但自身很少或者不依赖其他的包,受其他的包影响很小,这个包就是稳定的包,反之就是不稳定的包。
依赖性应该从不稳定的包转到稳定的包,即不稳定的包依赖于稳定的包,按照依赖关系稳定度降低。
稳定性指标Ca输入耦合度:指处于该包的外部并依赖于该包内的类的类的数目。
不稳定性I:I = Ce / (Ca + Ce)
依赖性应该从大I度量的包转到小I度量的包,即一个包的I度量值应该大于它所依赖的包的I度量值。
稳定抽象原则
包的抽象程度应该和其稳定程序一致
一个包如果是稳定的包,那么他就是抽象的包;如果是不稳定的包,就是不抽象的包。
抽象类占的比例越高,包就越抽象。
抽象的包:有很多抽象类
不抽象的包:没有抽象类


  • 贴吧用户_57tJD5E
  • 活跃吧友
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 红蓝绿
  • 核心吧友
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

包耦合原则解决的是设计包之间关系的问题,其内容包括:
一.无环依赖原则
包之间的依赖关系不能存在环,也即不能循环依赖。
要去掉环,有两种方法:
①遵循依赖倒置原则进行设计,引入接口进行解耦;
②创建新的包,供形成环的包依赖使用,以消除环。
二.稳定依赖原则
依赖性应该从不稳定的包指向稳定的包,即不稳定的包依赖于稳定的包。
被其他包依赖,但自身很少或者不依赖其他的包,受其他的包影响很小,这个包就是稳定的包;反之,则是不稳定的包。
衡量包稳定与否的方法:
一个包的不稳定度 = 包里所有类的出度之和 /(包里所有类的出度之和 + 包里所有类的入度之和)
三.稳定抽象原则
包的抽象程度应该和其稳定程度一致。
一个包里面包含的抽象类越多,这个包就越抽象;反之,这个包就越不抽象。
衡量包抽象程度的方法:
一个包的抽象程度 = 包中抽象类的数量 / (包中抽象类的数量 + 包中具体类的数量)


  • 枝尼花
  • 活跃吧友
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
无环依赖原则:在包的依赖关系图中不允许出现环。如果出现环,就无法避免早后综合征的问题,且无法进行增量式开发。因为修改环路上任何一个包,都会影响其他的包。而如果没有环,那么一定可以找到一个包他不依赖于别的包,在开发时,我们可以先对这个包进行开发,然后采取增量式开发其他部分,这样也就可以解决早后综合征。破除环的方法,有两种。一种是采用依赖倒置原则,新增一个接口类。另一种是创建一个新的包。
稳定依赖原则:包与包之间顺着稳定的方向依赖,即不稳定的包依赖于稳定的包。
稳定的包就是被更多的被其他包依赖,而很少甚至不依赖于其他包的包。
遵从稳定依赖原则才能让包之间的依赖关系较低。如果不遵从这一原则,不稳定的包又依赖于其他不稳定的包,那么我们对任意一个包做修改,都会对别的包有很大的影响。
稳定抽象原则:一个稳定的包应该是抽象的。程序中的具体实现,通常容易被修改,而抽象的高层的概念,是相对不会变化的。比如有一个类“生物”,那么,“动物”、“人类”等类都要继承“生物”这个类,若“生物”这个类中有个“睡眠”方法,那么有的生物是晚上睡觉,有的是白天睡觉,这样该方法的具体实现就不同。在这个关系里,“生物”就是稳定的,被依赖的,它是抽象的。而不稳定的,继承于它的类是不抽象的。这个原理也与依赖倒置原则中,新添一个接口类的解决方法类似。


  • 快乐小瓜G
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
包耦合原则、以下三个原则:
1.无环依赖原则:
A=>B B=>C C=>A
此结构称为有环,在这样的结构中无论修改ABC中哪一个,都需要对另外两个修改,耦合度高。
A=>B B=>C C=>D
此结构为无环,在这样结构中修改其中一个,只需要修改其下游的包,耦合度相对较低。
去环方法:依赖倒置方法
2.稳定依赖原则:
稳定的定义:一个包依赖的越少,被依赖的越多,就越稳定。(不被其他包影响的能力)
稳定依赖原则:使被依赖的包的稳定程度尽可能高
3.稳定抽象原则:
抽象的定义:一个包所含的抽象类越高,就越抽象。
稳定与抽象的关系:越抽象,在某种程度上就会越稳定。
稳定抽象原则:使被依赖的包的抽象程度尽可能高。


  • 无存在感的QwQ
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
包耦合原则是用来解决包之间关系的问题。
包耦合原则包含无环依赖原则、稳定依赖原则、稳定抽象原则。
无环依赖原则
简称 ADP
无环依赖原则要求在包依赖关系图中不允许环存在。
消除包依赖图中的环?
1. 将开发环境划分为可发布的包
2. 自顶向下的设计
3. 应用依赖倒置原则
稳定依赖原则
简称 SDP
无环依赖原则要求顺着稳定的方向依赖。
SDP 原则可以确保不稳定的模块依赖稳定的模块。
稳定的包:3个软件包依赖包 X,包 X 不依赖其他包。

不稳定的包:包 Y 依赖3个包,没有其他包依赖包 Y。

稳定抽象原则
简称 SAP
稳定的包应该是抽象的
1. 一个稳定的包也应该是抽象的,其稳定性不应该妨碍它被扩展
2. SAP和SDP合起来等同于包的DIP原则


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 3 4 下一页 尾页
  • 58回复贴,共4页
  • ,跳到 页  
<<返回包尔老师的...吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示