模式如何帮助松散耦合?

时间:2013-10-17 11:13:38

标签: design-patterns instantiation loose-coupling responsibility code-complexity

我是java模式的新手,我正试图弄清楚它是如何适应真实世界的。 关于模式的大多数网站和书籍似乎都是由非程序员编写的。

我正在尝试定义模式如何帮助耦合,这是我到目前为止的定义。我想知道的是什么模式对于松散耦合真的有用,并且它们值得付出努力。此外,到目前为止,我的定义/理解是否正确:

“耦合是度,两个或多个不同的对象,访问和/或相互作用。”

两个物体之间的紧密耦合:

  • 引用/实例化:很多人对其他对象的敬畏 许多地方,一个或两个对象(多对多参考)

  • 复杂性:通常需要访问函数的参数很多,或者 访问不同功能的顺序。没有通用的界面 对于相关对象。

  • 责任:做一些应该在对象中完成的工作 被访问,或另一个对象。访问嵌套函数 直接

  • 性能:有时紧耦合的最大原因 要求,但应尽量减少。

两个物体之间的松散耦合:

  • 引用/实例化:很少,但至少有一个引用 对象但不在两者中(一到几个引用)
    帮助的模式:Factory,Singleton,Builder,Composite

  • 复杂性:很少,定义明确的参数(通常用 接口),具有最少可能的功能序列(exp。打开, 取,关闭)
    有用的模式:适配器,桥接器,装饰器,外观,命令

  • 责任:只做对象负责的工作和 尝试只访问一级功能。
    有用的模式:装饰者,责任链,MVC

  • 性能:确定性能需求的位置,并保留这些性能 根据定义,类甚至可以作为嵌套类 紧密耦合。

1 个答案:

答案 0 :(得分:0)

被认为是松散耦合最佳的模式是IoC:使用依赖注入进行的控制反转。

基本上,如果一个类Alfa需要另一个Beta类对象,你必须手动测试Beta并将其传递给Alfa(注入):

Beta myDependencyObject ....;
Alfa myObjectWithDependency(myDependencyObject);

通过这种方式,您可以了解Alfa与Beta的依赖关系。