gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:17:55 29 4
gpt4 key购买 nike

保持类松散耦合是编写易于理解、修改和调试的代码的一个重要方面——我明白这一点。然而,作为一个新手,几乎任何时候我都会超越我所苦苦挣扎的最简单的例子。

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

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

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

我只是在概念上迷失了“更好的方式”是如何工作的。有什么想法吗?

最佳答案

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

OOP 背后的理念从离散的、可重用的逻辑单元开始。强调创建自给自足的模块。

对于 RTF 备忘录组件,它通过处理给定的一组数据(备忘录)来满足上述标准,这样您的程序和程序中的其他对象就不会关心它是如何工作的。它的目的是显示一个界面,接受数据,操作该特定数据,并将该数据传递给程序的另一部分。

loosely coupled 背后的理念只是你可以用另一个满足相同接口(interface)规范的控件替换那个备忘录控件。也就是说,您可以实例化它,让用户与之交互,并在必要时提取数据。

松散耦合与 的想法齐头并进Separation of Concerns (系统级);这是将程序分解为不同功能以减少重叠功能并使管理更容易的过程。但它们不是一回事。顺便说一句,这也是从程序化编程风格转向 OOP 背后的主要驱动力之一。由于 OOP 迫使编程根据相关和离散的功能进行思考。

听起来你真的在问 SoC。

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

关于oop - 初学者的松散耦合和 OO 实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/690869/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com