装饰器与耦合聚合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器与耦合聚合相关的知识,希望对你有一定的参考价值。

装饰器与耦合聚合

装饰器

  1. 装饰器本质也是一个一参高阶函数,参数也是函数,构成了函数的嵌套,再利用闭包特性将内外层函数的作用域联系起来。
  2. 主要用于函数非核心功能的增加,使原函数的功能增强,应用范围更广,方式更灵活,将核心功能和非核心功能解耦。
  3. 所以当需要对核心功能的函数做附属功能增强时,但又不想因为附属功能的修改影响到核心功能,降低各个功能的耦合度,首选使用装饰器。

耦合度、聚合度

1.”程序=数据结构+算法“这句话广为人知,而“程序的要求是高聚合、低耦合”这句话也具有同等的重要性。
2.耦合和聚合一直都以“高聚合,低耦合”的形式一同出现,聚合是一个模块内部各成分之间相关联成都的度量,耦合是模块之间相关联程度的度量。
3.对于聚合,它是对一个模块(最低级狭义的就是函数)内部的度量,所以常称内聚。一般来说,要做到高聚合,一个模块应该只能完成一个独立的功能,模块内部不存在与该功能无关的操作与状态。
4.对于耦合,它主要指不同对象之间相互管理的程度,模块之间的关联越少越好。如果一个对象过多的依赖于其他对象来完成自己的工作,则不仅使该对象的可理解性下降,而且还会增加测试、修改的难度,同事降低了类的可重用性和可移植性。
对象不可能是完全孤立的,当连个对象必须相互联系时,应该通过类的公共接口实现耦合,不应该依赖于类的具体实现细节。

综上

装饰器这个类,给核心功能函数和增强功能函数提供了一个公共的接口来耦合,但各个功能之间是不相互依赖、解耦的,使调试和修改更方便,代码的健壮性也提高了,应尽可能的多使用。

以上是关于装饰器与耦合聚合的主要内容,如果未能解决你的问题,请参考以下文章

Python装饰器与面向切面编程

如何在 QML 中将 @pyqtSlot 装饰器与其他装饰器一起使用?

打字稿装饰器与类继承

装饰器与继承

python11 装饰器与闭包

装饰器与函数的多层嵌套