【问题标题】:How does patterns help loose coupling?模式如何帮助松散耦合?
【发布时间】:2013-10-17 11:13:38
【问题描述】:

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

我正在尝试定义模式如何帮助耦合,这是我迄今为止的定义。我想知道的是哪些模式对松散耦合真正有用,它们是否值得努力。另外,到目前为止我的定义/理解是否正确:

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

两个对象之间的紧密耦合:

  • 引用/实例化:非常尊重另一个对象,在 许多地方,在一个或两个对象中(多对多引用)

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

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

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

两个对象之间的松散耦合:

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

  • 复杂性:很少有明确定义的参数(通常由 接口),具有尽可能少的功能序列(exp. open, 获取,关闭)
    有帮助的模式:Adaptor、Bridge、Decorator、Facade、Command

  • 责任:只做对象负责做的工作和 尝试只访问下一层的功能。
    有帮助的模式:装饰器、责任链、MVC

  • 性能:确定性能需要在哪里,并保持这些性能 一起类 - 根据定义,甚至可以作为嵌套类 紧密耦合。

【问题讨论】:

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


【解决方案1】:

被认为最适合松散耦合的模式是 IoC:控制反转,使用依赖注入实现。

基本上,如果一个类 Alfa 需要另一个类 Beta 的对象,您必须手动实例化 Beta 并将其传递给 Alfa(注入):

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

这样你就暴露了 Alfa 对 Beta 的依赖。

【讨论】:

    猜你喜欢
    • 2013-05-06
    • 2011-01-20
    • 2017-06-05
    • 2011-01-01
    • 2013-07-29
    • 2020-10-26
    • 2011-02-22
    • 2014-03-15
    • 2010-11-28
    相关资源
    最近更新 更多