题
虽然有关于这个论坛包含耦合和凝聚力的例子很多很好的例子,我奋力把它完全适用于我的代码。我可以找出我的代码部分可能需要改变。将任何Java专家能看看我的代码,并解释给我哪些方面有好有坏。我不介意在所有改变它自己。只是,很多人似乎与对方不同意,我觉得很难真正了解遵循什么原则?
解决方案
我可以推荐艾伦和詹姆斯的书 设计模式解释 - 新面向对象设计的角度来看 强>(ISBN-13:978-0321247148):
这是关于一个伟大的书具有-A 和是-A decissions,包括凝聚和在面向对象的设计耦合。
其他提示
首先,我想说,你得到这些各不相同的答案的首要原因是,这确实随着时间的推移一门艺术。许多你不归结为硬快规则或事实的意见,更可以归结为一般的经验。 10 - 20年这样做了以后,你开始记住你做了什么事情,引起的疼痛,以及如何回避再次做他们。答案很多的一些问题的工作,但它是个人的经验决定自己的意见。
有真的只有1件非常大的事情,我会在你的代码改变。我会考虑寻找到什么叫做命令模式。这方面的信息应该不难发现无论是在网络上还是在GoF的书。
的主要思想是,每个命令“添加子”,“添加父”的成为一个单独的类。对于单个命令的逻辑被封闭在一个单一的小的类,易于测试和修改。该类然后应“执行”从你的主类做的工作。这样一来,你的主类只处理命令行解析,并可能失去大部分的知识谱系图的。它只是知道命令行映射到其指挥类和踢他们。
这是我的2美分。
<强>简而言之:强>
凝聚力软件工程,在现实生活中,多少由元素一个整体(在我们的例子让我们说一个类),可以说它们实际上属于一起。因此,它是每一块的功能由软件模块的源代码表示如何密切相关是一个量度。
在OO的角度来看待凝聚力的一种方法是,如果在类中的方法所使用的任何私有属性。
现在讨论的是比这但高内聚(或内聚力的最佳类型 - 的功能凝聚力)大。当一个模块的部件被分组,因为它们都与模块的单个孔中定义的任务贡献
在简单的话耦合,是一个多少组分(再次,想象一类,虽然不一定)知道内部工作或另一个的内部元件,即,它多少知识的另一组分组成。
松散耦合是在系统或网络互连组件的方法,以使这些部件,取决于互相到最低程度实际可能...
<强>在长:强>
我写了一篇博客文章中针对此。一> 论述了这一切的细节,举例等,它也解释了为什么你应该遵循这些原则的好处。我认为它可以帮助...
联轴器定义了各成分取决于系统中的其它部件的程度。给定两个组分A和B,如果是如何改变一个B中多少代码必须改变。 凝聚力定义如何连贯或密切相关的一个软件组件are.It的各种功能的措施是指类做什么。 低凝聚力将意味着类做了伟大的各种动作,而不是集中在它应该做的事。那么高内聚意味着类是专注于什么应该做,即只与类的意图的方法。 注:良好的API松散耦合和高内聚。 紧耦合的一个特别令人憎恶形式应始终避免由具有依赖于彼此直接或间接地,即,一个依赖周期或循环依赖两种组分。 在下面的链接的详细信息, http://softwarematerial.blogspot.sg/2015/12/coupling-and -cohesion.html