在Delphi中从哪里开始OOP主要关注数据库开发?

时间:2009-06-19 12:47:44

标签: database delphi oop frameworks

我想从GUI设计中隔离数据库代码。在合理的时间里,我一直在阅读/搜索/浏览mgm / mvp / mvc / persistence / objects等主题。 我在设计可重用的对象层次结构/框架时遇到了困难。 Delphi是RAD的一个很好的工具,但当你想以不同的方式解决问题时,文档似乎无效。我想为数据访问开发一些持久性之王,并轻松地将数据连接到对象/对象列表中。并以多种方式集成数据显示(使用现有组件或不使用dbaware,创建多种格式的导出/导入例程)。我应该从哪里开始?你知道任何带代码的教程吗? 例如,Delphi安装中包含的mastapp演示是RAD-way作为初创公司的一个很好的来源。我需要OOP中的等价物:)评论&教程

8 个答案:

答案 0 :(得分:12)

嗯。很大的问题,这个东西不在手册中:(真的需要一本书来回答它。但是如果你要开始一个新的大项目,那么我的建议清单,用Delphi做了10年之后,将如下开始:< / p>

一般

在开始版本1所需的功能之前,请先仔细思考。但不要忽略版本2和版本3的花哨功能。

除了简单的单独的实用程序或基本数据输入屏幕外,不要使用数据感知控件。

推理:

  • 他们会立即破坏您的GUI&lt; - &gt;数据库分离。
  • 他们让你在用户友好性测试中略微降低了一点。
  • 他们鼓励Spaghetti Code

不要使用任何标准或第三方控件,包括表格,框架或数据模块。首先构建自己的派生类库 - 即使您在开始时没有添加任何功能,也总是使用这些类。

推理:

  • 完全控制应用程序的行为。
  • 简化向前兼容性。
  • 授予您完全自由地在新组件树中的任何位置引入新属性/功能,而无需编辑所有对话框和表单或对象。

尽可能将所有内容创建为具有getter属性的对象,只有在不能只读时才能隐藏复杂性和setter。训练自己总是使用自己的属性 - 使用快速公共变量作弊通常会导致您稍后将其重新创建为属性。

数据库设计 - 读一本书:)

GUI&lt; - &gt;数据库分离。

由于应用程序将不得不与数据进行交互,因此100%的分离我认为不可能。相反,您的基线对象可能至少定义:

  • 检索或加载数据的机制
  • 编辑该数据的机制
  • 保存数据的机制
  • 显示数据的机制。

我会称之为松散耦合。

对于每个数据表或密切相关的表组创建一个单独的Datamodule,其中包含只读查询,可写查询等。保持SQL尽可能简单 - 我在2天内将我的最后一个应用程序从Oracle移到了MYSQL - 150个表与相关的对象和编辑框架:)。最初也将它们全部链接到一个池连接,也可以在它自己的Datamodule中。

听起来你已经意识到列表,特别是TObjectLists,是你的朋友。再次 - 为您需要的每种类型的对象派生自己的。我实际上隐藏了更简单对象中的真实列表。公开Items和Count属性是微不足道的。然后根据需要使用内部列表向基本项添加更多功能。从那里列表列表是一个简单的步骤,几乎自然地遵循它们所代表的数据库数据的结构。

通过实际存储应用程序的不同部分在数据库中使用/需要的列表类型,您可以使用此方法变得更加复杂。然后,您可以动态创建正确的列表,而无需应用程序实际知道其中的内容 - 开发阶段的列​​表和对象本身应包含他们操作/加载/保存和显示自己的数据所需的所有功能:)。这也可以扩展到列表执行的功能。我使用了一些基本列表类型来公开简单的计数和项目 - 在我的例子中,它们有大约50个后代。

以这种方式工作您的项目可能会积累大量文件,但您可以依赖并信任Delphi - OO模型非常强大且很少被捕获。

如果您遵循大部分内容,您的主应用程序最终将成为列表加载器,这就是它:)在我的最新版本中,主要功能仅占用大约100行代码,但它启动的内容非常复杂。

最后 - 所有这些都是很多工作:(第一次做对不会发生让我们说实话,所以要准备好妥协你漂亮的对象模型,让应用程序出门,但要做出大评论以及为什么你这样做以及如何在以后再次纠正它。

祝你好运:)

答案 1 :(得分:5)

如果您真的想编写自己的对象持久性框架,我强烈建议您阅读tiOPF网站上的文档。特别是concepts manual

在阅读本文档时,您可能也对使用tiOPF感兴趣。它是一个稳定且强大的持久性框架,可以与所有主要数据库一起使用。

答案 2 :(得分:1)

Delphi有很多数据库控件,对于RAD来说很棒,但是很难将数据库与Gui分离。

您可以使用客户端数据集(midas)进行内部通信。它们可以与数据感知控件一起使用,并具有许多其他有趣的属性。

答案 3 :(得分:1)

我从来没有这样做但是......

查看Instant Objects。

有关在Delphi中直观构建类/对象的方法,请试用ModelMaker(商业解决方案)。

答案 4 :(得分:1)

Jazz SDK 价值类型,OF和MVP框架

答案 5 :(得分:1)

正如Dispatcher所说,这是一项很多工作,但它最终会得到回报。我强烈建议查看一个以上的现有系统。不要只是找到你发现的第一个。尝试了解它们的工作原理以及您对程序的愿景与框架概念的匹配程度。

获取一些关于模式的好书。当你继续沿着这条路走下去时,你会发现它们非常有价值。我建议GOF用于基础知识,Patterns of Enterprise Application Architecture用于数据库对象模型方面。这些库中的大多数概念都基于这些书中讨论的模式。

答案 6 :(得分:1)

您可能还想考虑hcOPF

答案 7 :(得分:-1)

如果您正在寻找框架,Data Abstract是我知道的最好的工具。