Design patterns 模式如何帮助松耦合?

Design patterns 模式如何帮助松耦合?,design-patterns,instantiation,loose-coupling,responsibility,code-complexity,Design Patterns,Instantiation,Loose Coupling,Responsibility,Code Complexity,我是java模式的新手,我正在尝试找出它如何适应现实世界。 大多数关于模式的网站和书籍似乎都是由非程序员编写的 我试图定义模式如何有助于耦合,到目前为止,这是我的定义。我想知道的是什么模式对松耦合真正有用,以及它们是否值得付出努力。此外,到目前为止,我的定义/理解是否正确: 耦合是两个或多个不同对象之间相互访问和/或交互的程度 两个对象之间的紧密耦合: 引用/实例化:对另一个对象的许多尊敬,例如 一个或两个对象中的多个位置(多对多引用) 复杂性:通常需要许多参数来访问函数,或者 访问不同函数的

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

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

耦合是两个或多个不同对象之间相互访问和/或交互的程度

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

  • 引用/实例化:对另一个对象的许多尊敬,例如 一个或两个对象中的多个位置(多对多引用)

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

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

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

两个对象之间的松耦合:

  • 引用/实例化:很少,但一个引用中至少有一个引用 对象,但不在两个引用中(一到几个引用)
    有帮助的模式:工厂模式、单例模式、生成器模式、复合模式

  • 复杂性:很少,定义良好的参数(通常由 接口),具有尽可能少的功能顺序(例如打开, 取出,关闭)
    有帮助的模式:适配器、桥接器、装饰器、外观、命令

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

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


    • 对于松耦合来说,被认为是最好的模式是IoC:使用依赖注入实现的控制反转

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


      通过这种方式,您可以揭示Alfa与Beta之间的依赖关系。

      请参阅有关该主题的其他文章()
      Beta myDependencyObject ....;
      Alfa myObjectWithDependency(myDependencyObject);