当前位置:  开发笔记 > 后端 > 正文

初学者的松散耦合和OO实践

如何解决《初学者的松散耦合和OO实践》经验,为你挑选了2个好方法。

保持类松散耦合是编写易于理解,修改和调试的代码的一个重要方面 - 我明白了.不过,作为一个新手,我几乎可以在任何时候超越最简单的例子.

我或多或少地了解如何在自己的类中封装字符串,整数和简单数据类型.当我开始处理富文本格式等信息时,事情变得非常复杂 - 除非我只使用组件中已有的各种方法.继续这个例子,假设我正在写一些包含UI中的RTF备忘录组件的东西.在Delphi中,该组件具有内置方法,可用于保存格式化文本.此外,有时看起来使用RTF文本本身的唯一(或至少是最好的)方法是通过再次内置到组件中的方法.

当我已经拥有一个为我完成所有这些操作的组件时,我将如何(或为什么)在另一个类中执行保存,加载和格式化文本的所有工作?

就我自己而言,我通常最终要么(a)做一些看起来比需要复杂得多的事情,重新发明已经存在的方法,或者(b)创建仍然紧密耦合到彼此的做得很差的类.正如他们在商业中所说的那样,"必须有更好的方法!"

我只是在概念上迷失了"更好的方式"的运作方式.有什么想法吗?



1> tvanfosson..:

我建议将两个概念,接口和依赖注入作为一种解耦类的方法.接口为您提供了一种方法来定义一个独立于任何实现的合同或一组预期行为.如果某个类依赖于接口而不是类,则可以自由地替换实现接口的其他类,而无需重写依赖于它的类.

当您使用具有依赖项注入的接口时,即,为类提供实际的实现,而不是让它自己创建特定的实现,您可以在应用程序中实现更多的解耦.现在该类只知道接口,甚至不知道如何创建它,只需使用它.依赖注入通常与创建模式(如Builder或Factory)一起使用,您可以在单个类中本地化对象的构造,以便在使用其他类扩展应用程序时只需更改该类.

此外,请记住耦合(及其双胞胎,内聚)是一个相对的衡量标准.您无法消除所有耦合,或者您的对象无法进行交互.有一定程度的依赖是必要的.您需要在易用性和实施​​方面进行平衡.

至于你的特定例子,没有实际的代码就很难说清楚.我怀疑你是在过度设计解决方案并违反DRY原则(不要重复自己).您可能需要查看使用接口的方法,也许还需要一个轻量级的包装器来将类与框架组件分离,而不是完全重新实现.



2> NotMe..:

我相信你错过了一些基本概念.

OOP背后的理念始于离散的,可重复使用的逻辑单元.重点是创建自给自足的模块.

对于RTF Memo组件,它通过处理给定的一组数据(备忘录)来满足上述标准,使得程序和程序中的其他对象不关心它的工作方式.它的目的是显示界面,接受数据,操纵特定数据,并将数据传递到程序的另一部分.

松散耦合背后的想法只是你可以用另一个符合相同接口规范的控件替换该备忘录控件.也就是说,您可以实例化它,让用户与之交互,并在必要时将数据拉出.

松散耦合与分离关注(SoC)的想法密切相关 ; 这是将程序分解为不同功能的过程,以减少重叠功能并使管理更容易.但它们不是一回事.顺便提一下,这也是从编程的程序风格转向OOP的主要驱动因素之一.由于OOP迫使编程思考相关和离散功能.

听起来你真的在问SoC.

有很多方法可以实现SoC.有时它涉及保持UI,处理逻辑和持久层分离(例如,考虑MVC设计模式).有时它只是将相关功能保持在一起以降低复杂性; RTF控件已经通过包含操作数据所需的所有函数来执行此操作,因此您没有进一步的依赖关系.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有