Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 哪种设计支持低耦合?_Design Patterns_Coupling - Fatal编程技术网

Design patterns 哪种设计支持低耦合?

Design patterns 哪种设计支持低耦合?,design-patterns,coupling,Design Patterns,Coupling,哪种设计支持整体低耦合?为什么呢?在第一个例子中,付款是由销售创建的,所以这更为耦合 在第二种模式中,依赖注入的耦合度较低,这是一种设计模式,将行为与依赖解析分离,从而解耦高度依赖的组件付款和销售在第一张图片中高度依赖。在第一张图片中,付款与销售是耦合的。第二种是注册和销售。我想说,第一个具有较低的耦合,因为寄存器没有支付的概念。付款可以完全取消,不需要更改注册。在第二种情况下,如果您取消了付款,则注册和销售都需要更改。我看不出第一种情况有什么意义。不需要注册吗 在第二个示例中,可以使用任何类型


哪种设计支持整体低耦合?为什么呢?

在第一个例子中,
付款
是由
销售
创建的,所以这更为耦合


在第二种模式中,依赖注入的耦合度较低,这是一种设计模式,行为与依赖解析分离,从而解耦高度依赖的组件<代码>付款和
销售
在第一张图片中高度依赖。

在第一张图片中,付款与销售是耦合的。第二种是注册和销售。我想说,第一个具有较低的耦合,因为寄存器没有支付的概念。付款可以完全取消,不需要更改注册。在第二种情况下,如果您取消了付款,则注册和销售都需要更改。

我看不出第一种情况有什么意义。不需要注册吗


在第二个示例中,可以使用任何类型的付款。(签证、现金等)。因此,它的耦合更加松散。

第二个集中了寄存器中的所有“智能”,这看起来很不错。然后付款和销售只是“照他们说的做”。在第一种情况下,责任更分散,可能更棘手。但是不确定如何实际测量整体低耦合!我也有兴趣看到即将到来的答案。:-)我想你可能会找到一本书()《基于事件的编程:将事件发挥到极致》不要把标题放在表面上——第一章给出了一个有见地的描述和方法,通过它可以将耦合减少/转移到耦合行为的较低形式。我不确定我是否同意这一点(原因很明显:)。DI或无DI不会使设计或多或少耦合。在这种情况下,其中一个类需要动态实例化付款。即使您使用DI,在Sale中封装完整的支付也会降低耦合。似乎更明智的设计是让Register acceptPayment(p)创建一个销售,但它不是我的registerRegister应该将此任务委托给销售,否则Register将成为incohesive@nsfyn55你说DI没有(使设计或多或少耦合):)我说它有-通过DI Paymant可以重用。。。它甚至可以有一个实例;)但这不是耦合。第二种支持的耦合形式称为内容耦合。“内容耦合推断更改第二个模块生成数据的方式(位置、类型、时间)将导致更改从属模块。”。在两种情况下,销售和注册都是与支付API耦合的内容。在一次销售中,只有一次是免费的。你有多少实例是不相关的。DI和接口可以用于将客户机类与实现分离,但在这种情况下没有接口。简单的答案是,如果不支付,哪一个需要更多的代码更改。不管你用什么方法删掉它,答案都是第二位的,因为在第二位有两个付款的接触点。从创建者的角度来看,登记簿记录付款。所以它包含了关于付款的信息。因此,根据定义,它应该创建“不付款”,这是不相关的。如果删除了所有的注册表、付款和销售,请将它们替换为Object1、Object2和Object3。我想说,其中一个是最解耦的。画一个简单的依赖关系图,然后数一数行。方式2-注册取决于销售和付款。销售取决于付款-->共3行。方式1-注册取决于销售,销售取决于付款-->即2。2小于3,因此耦合性较小“在计算机科学中,耦合或依赖性是指每个程序模块对其他模块的依赖程度。”