图案如何帮助松耦合



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

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

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

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

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

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

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

  • 性能:有时紧密耦合的最大原因必需,但应最小化。

两个对象之间的松耦合:

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

  • 复杂度:很少的、定义明确的参数(通常由接口),具有尽可能少的功能序列(exp. open,获取,关闭)
    帮助的模式:适配器,桥,装饰器,立面,命令

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

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

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

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

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

通过这种方式,您可以暴露阿尔法对 Beta 的依赖关系。

最新更新