1

我是新来的java模式,我试图弄清楚它如何适应真实世界。 大多数网站和关于模式的书似乎都是由非程序员编写的。模式如何帮助疏松耦合?

我想定义模式如何帮助耦合,这是我迄今为止的定义。我想知道什么样的模式对于松耦合来说真的很有用,他们是否值得付出努力。另外,目前我的定义/理解是否正确:

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

两个对象之间

紧耦合:

  • 引用/实例化:许多尊敬到另一对象,在 很多地方,在一个或两个对象(多对多的引用)

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

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

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

    • 引用/实例化::很少,但但不同时在一个 对象的至少一个参考(一到几个参考文献)
      图形,有助两个物体之间

    松散耦合:工厂,单件,生成器,复合

  • 复杂性:几个明确定义的参数(通常由接口定义),具有最少的可能序列功能(exp。开放, 取,接近)
    模式,可以帮助:适配器,桥,装饰,幕墙,命令

  • 责任:只有做工作的对象是负责做和 尽量只访问功能的一个水平了。
    模式,可以帮助:装饰,责任链,MVC

  • 性能:确定在性能必须和那些 类团结在一起 - 甚至是嵌套类,每紧密耦合的定义 。

+0

查看关于该主题的其他一些帖子(http://blog.ploeh.dk/2012/02/02/LooseCouplingandtheBigPicture/) – megawac

回答

0

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

基本上如果一个类阿尔法需要类贝塔的另一个目的,必须手动实例化贝塔并将它传递给阿尔法(注射):

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

这样会暴露该阿尔法与贝塔的关系是不。