保持类松散耦合是编写易于理解、修改和调试的代码的一个重要方面——我明白了。然而,作为一个新手,几乎任何时候我都很难超越最简单的例子。
我或多或少地了解如何将字符串、整数和简单数据类型封装在它们自己的类中。然而,当我开始处理富文本格式等信息时,事情变得非常复杂——除非我只使用组件中已有的各种方法。为了继续这个示例,假设我正在编写一些在 UI 中包含 RTF 备忘录组件的内容。在 Delphi 中,该组件具有用于执行诸如保存格式化文本之类的操作的内置方法。此外,有时似乎处理 RTF 文本本身的唯一(或至少是最佳)方法是通过再次内置于组件中的方法。
当我已经有一个可以为我完成所有这些工作的组件时,如何(或为什么)在另一个类中完成所有保存、加载和格式化文本的工作?
就我自己而言,我通常最终要么(a)做一些看起来比需要复杂得多的事情,重新发明已经存在的方法,要么(b)创建仍然彼此紧密耦合的做得很差的类。正如他们在电视广告中所说,“必须有更好的方法!”
我只是在概念上迷失了“更好的方式”如何运作。有什么想法吗?
我相信您错过了一些基本概念。
背后的想法OOP http://en.wikipedia.org/wiki/Object-oriented_programming从离散的、可重用的逻辑单元开始。重点是创建自给自足的模块。
对于 RTF Memo 组件,它通过处理给定的数据集(备忘录)来满足上述条件,这样您的程序和程序中的其他对象就不会关心它如何工作。它的目的是显示界面、接受数据、操作特定数据并将该数据传递到程序的另一部分。
存在背后的想法松耦合 http://en.wikipedia.org/wiki/Loosely_Coupled简单地说,您可以用另一个满足相同接口规范的控件替换该备忘录控件。也就是说,您可以实例化它,让用户与其交互,并在必要时提取数据。
松散耦合与以下想法齐头并进关注点分离 http://en.wikipedia.org/wiki/Separation_of_concerns(系统芯片);这是将程序分解为不同功能的过程,以减少功能重叠并使其更易于管理。但它们不是同一件事。顺便说一句,这也是从过程式编程风格转向 OOP 的主要驱动力之一。由于 OOP 迫使编程根据相关和离散的功能进行思考。
听起来你真的在问SoC。
实现SoC的方法有很多种。有时,它涉及将 UI、处理逻辑和持久层分开(例如考虑 MVC 设计模式)。有时只是将相关功能放在一起以降低复杂性; RTF 控件已经通过包含操作数据所需的所有函数来实现这一点,这样您就不再有进一步的依赖性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)