捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:Object Persistent Framework
fatspider 29304 2007/5/8 15:43:39
学习一下。
jhwh 9789 2004/11/23 20:58:08
这样设计的出发点有问题。用继承的方式,需要做的工作太多了。如果子类不通过大量的修改,想做到一次编写是完全不可能的。更有甚者,一个小的修改,继承来的子类也完全得重写。
dinkysoft 9724 2004/11/22 13:56:44
sephil,举个例子来看看。不知道有没有用过
hotyei 9721 2004/11/22 13:33:59
以前试过 InstanctObject ,看过它的 Demo, 它自己会处理数据的保存,不过这样保存的数据感觉不好维护。或许是我未深入。
sephil 9719 2004/11/22 12:32:04
不知道你们用过InstanctObject没
感觉很好
dinkysoft 9717 2004/11/22 10:55:40
看错了。
dinkysoft 9716 2004-11-22 10:53:52 
Mr Phil Brown是将数据库字段映射成对象,更好的面向对象编程。MS.NET的C# DEMO(petshop)也有Mr Phil Brown 的方法。 

也就说错了
dinkysoft 9716 2004/11/22 10:53:52
Mr Phil Brown是将数据库字段映射成对象,更好的面向对象编程。MS.NET的C# DEMO(petshop)也有Mr Phil Brown 的方法。
windlian 9715 2004/11/22 10:33:23
参考:Mr Phil Brown http://www.howtodothings.com/showarticle.asp?article=159
Mr Phil Brown 是用List存放从数据库中读取的数据,List里面包含Object,每一个Object就是一个数据记录
感觉这种方式不错,但是对象开销随数据库记录多少而增长,速度可能是给问题。而且我们的习惯都是用DBGrid显示数据。
windlian 9714 2004/11/22 10:26:35
还有三个BaseForm。
BaseDetailForm, 详细资料界面
BaseFindForm, 资料查找界面
BaseGridForm, 用DBGrid显示的界面
覆盖各个BaseForm的方法就可以。
windlian 9713 2004/11/22 10:23:22
使用方法简述,参照uCard:
1.TCard继承于TDataObject,手工进行数据库的映射-字段对应Field。
  FCardNo - cd_No, FStatus - cd_Status
  并覆盖IsValid方法,这个是判断数据是否合法。
2.TCardDOO继承于TClientDataSetDOO,
  (TClientDataSetDOO->TDataBaseDOO->TDataOperateObject->TObject
  TDataOperateObject是虚基类,封装了对数据操作的一些方法,也可以用接口实现
  TDataBaseDOO是通过Delphi内的各种数据库对象如Table, Query实现数据操作
  TClientDataSetDOO是用ClientDataSet实现数据操作。)

  覆盖以下方法:
    DoEditRecord, DoInsertRecord,DoGetDataObject,Create,AssignRecord
  这里是使用了Template模式
  
dinkysoft 9706 2004/11/22 8:55:02
shaoyy,我不觉得实现麻烦(可能是我没有认真看)。
能说说你对象持久支持层吗?:)
windlian 9703 2004/11/22 8:51:43
to shaoyy:
要直接映射数据库难啊,水平不够唯有将就,呵!
dinkysoft 9702 2004/11/22 8:50:58
《Delphi模式编程》看来又是一本好书了。看来又要出血了。不过好书不多。不可以错过。谢谢楼主推荐。
shaoyy 9701 2004/11/22 8:45:59
good! 不过这种数据持久层设计虽然清晰,但是实际应用还是太麻烦,我在自己的系统里实现了"通用对象持久层",即所有的对象共用一个Persistent Object,前提是我的业务对象的底层实现了"对象持久支持层",主要向子类开放了两个方法:GenerateLoadSQL 和 GenerateSaveSQL,有点像fastreport 中的每个View都有SaveToStream 和 LoadFromStream,然后Report的SaveFromStream 就很简单了。当然如果子类不实现GerateLoadSQL方法,仍然可以采用楼主的方法来实现。
windlian 9698 2004/11/22 8:23:49
呵,是抄《Delphi模式编程》
dinkysoft 9697 2004/11/22 8:18:40
惨了,乱码!改不了。
楼主,有学习的QQ不
dinkysoft 9696 2004/11/22 8:16:19
class function TdmData.AccessInstance(Request: Integer): TdmData;
const
  FInstance: TdmData = nil;
begin
  {
    0:  ²»×öÈκδ¦Àí£¬·µ»ØÊµÀý¡£
    1£º Èç¹ûʵÀýδ´´½¨Ôò´´½¨Ö®£¬·ñÔò·µ»ØÊµÀý¡£
    2£º Êͷŵ±Ç°ÊµÀý£¬Ê¹Finstance:= nil
  }
  case Request of
    0: ;
    1: if not Assigned(FInstance) then
       begin
         FInstance:= CreateInstance(nil);
       end;
    2: FInstance:= nil;
  else
    raise Exception.Create('Cannot Access This Instance!');
  end;
  Result:= FInstance;
end;
这里是用了Singleton Design Pattern么。呵呵。

不错。学习,学习!(想此源码不适合初学者!:(。乱说的我也是初学者)
第一页 上一页 下一页 最后页 有 17 条纪录 共1页 1 - 17
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表