Al *_*l C 10 delphi oop separation-of-concerns
我知道将用户界面代码与域代码分开是很重要的 - 应用程序更容易理解,维护,更改,并且(有时)隔离错误.但这是我的精神障碍......
Delphi附带了可以满足我想要的方法的组件,例如,RichText Memo组件可以让我使用富文本.其他组件,如TMS的字符串网格,不仅可以满足我的需求,而且还为功能付出了额外的代价.这些功能将R放在RAD中.
编写我自己的类来做别人已经为我做过的事情似乎是不合逻辑的.它正在重新发明轮子[曾尝试直接使用富文本?:-)]但是如果我使用这些组件中内置的功能,那么我最终会得到很多混合的UI和域代码 - 我会在其事件处理程序中内置大部分代码.
你是如何处理这个问题的?...或者,如果我想继续使用其他人已经为我编写的代码,您会如何建议我处理该问题?
首先,请记住"处理富文本"不是您的应用程序应该做的.您的应用程序应该允许用户执行某项任务,而处理该任务的代码是您的域逻辑.如果您的程序需要完成的部分任务涉及使用富文本,那么您可以将其中的一部分委派给富文本组件.正如您所提到的,复杂性来自这些库和域逻辑之间的接口.
Delphi域逻辑和Delphi UI控件之间的交互方式主要是通过事件处理程序.但这并不意味着您需要将域逻辑放在事件处理程序中.相反,尝试编写包含您需要完成的特定于域的任务的代码的单元,并让事件处理程序调用这些单元.
换句话说,不要编写类来重新发明轮子并做其他人已经为你做过的事情.你是对的,这是不合逻辑的.但是编写特定于应用程序的部分,你使用的控件和库没有作为它们各自单独的单独的类提供,并通过表单上的事件处理程序和公共方法或属性连接它们,你最终会关注得体.