Guest:
Register
|
Login
|
Member List
|
Search
|
Statistics
|
FAQ
Language
----------
Simplifed Chinese
Traditional Chinese
English
CnPack Forum
»
技术板块灌水区
» 各位老师,请看下列需求该如何设计?
‹‹ Last Thread
|
Next Thread ››
Poll
Trade
Reward
Activity
Printable Version
|
Email to Friend
|
Subscription
|
Favorites
Subject: 各位老师,请看下列需求该如何设计?
sdshw
新警察
UID 978
Digest Posts 0
Credits 38
Posts 21
点点分 38
Reading Access 10
Registered 2005-8-8
Status Offline
#1
Post at 2011-1-17 14:12
Profile
|
Blog
|
P.M.
各位老师,请看下列需求该如何设计?
各位老师,请看下列需求该如何设计?
有个数据处理类 TDataProcess 负责分析处理数据,处理完成后要交给UI展示数据,
展示的UI要有多种风格
我本来是这样设计的:
IShowUI = interface //展示数据的接口 比如显示日志数据、显示图像数据等等
procedure ShowDataA;
procedure ShowDataB;
...
end;
TDataProcess = class
private
public
UI: IShowUI; //把数据展示做成接口
end;
TShowUI_1 = class(TForm, IShowUI)
//实现IShowUI接口
end;
TShowUI_2 = class(TForm, IShowUI)
//实现IShowUI接口
end;
这样设计,每个展示Form可视化的设计界面并各自去实现接口就可以了
但是,我对接口的了解不是很深刻,特别是关于生存期、释放之类的
所以,我想请问各位老师,如果不使用接口的话,满足该需求该如何设计呢
zzzl
(早安的空气)
版主
UID 590
Digest Posts 0
Credits 399
Posts 199
点点分 399
Reading Access 100
Registered 2004-11-29
Status Offline
#2
Post at 2011-1-17 21:35
Profile
|
Blog
|
P.M.
|
规则很简单,引用计数为0时就释放了。
你的设计并不坏啊,但从显示日志和显示图像这两个需求中抽象出接口好象有点困难? 另外,你的TDataProcess 和 IShowUI 好象是在一个线程里的,这样如果以后要把 TDataProcess 放到线程中,就要小心VCL同步的问题。
最简单的方法是让TDataProcess 给UI发消息,数据包就是消息参数。
Passion
(LiuXiao)
管理员
UID 359
Digest Posts
19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
#3
Post at 2011-1-17 23:02
Profile
|
Blog
|
P.M.
如果如楼上所说能抽象出共同的接口,那还是用接口优雅些。或者用抽象虚基类,但本质上和接口也是类似的,只不过Delphi不支持多重继承,所以还是接口方便。IDE的对外开放的OpenTools API都是通过接口实现的。
sdshw
新警察
UID 978
Digest Posts 0
Credits 38
Posts 21
点点分 38
Reading Access 10
Registered 2005-8-8
Status Offline
#4
Post at 2011-1-17 23:07
Profile
|
Blog
|
P.M.
回复 #2 zzzl 的帖子
多谢zzzl老师的耐心指导
针对我的问题,说白了我就是想让数据处理和展示分层,并且有多种展示风格
每个UI展示的数据是一样的(我理解为比如接口中有10个函数,就是展示10类数据)
另外,TDataProcess确实是工作在线程中的(使用了Indy的IdTcpServer,每个Client一个线程,大约200个Client)
线程中我已做过同步处理(Synchronize),但是感觉处理的相当别扭
因为Synchronize传递参数很不方便,必须为每类数据放一个成员变量
用发消息的方式确实是个好办法,但是UI在相应消息的时候,必须要清楚传递的数据结构,感觉稍微有点不爽 呵呵
sdshw
新警察
UID 978
Digest Posts 0
Credits 38
Posts 21
点点分 38
Reading Access 10
Registered 2005-8-8
Status Offline
#5
Post at 2011-1-17 23:13
Profile
|
Blog
|
P.M.
回复 #3 Passion 的帖子
LiuXiao老师,抽象虚基类您指的是带virtual; abstract;关键字的吗?
Passion
(LiuXiao)
管理员
UID 359
Digest Posts
19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
#6
Post at 2011-1-18 18:53
Profile
|
Blog
|
P.M.
对。不过Delphi低版本中没有纯的虚基类的说法,virtual abstract一般是指抽象虚方法。
应用起来就是这个意思。
Poll
Trade
Reward
Activity
CnPack Forum
CnPack English Forum
> CnWizards IDE Wizards
> CVSTracNT
> Announcements & Others
All times are GMT++8, the time now is 2024-11-22 01:57
Powered by
Discuz!
5.0.0
© 2001-2006
Comsenz Inc.
Processed in 0.007756 second(s), 7 queries , Gzip enabled
TOP
Clear Cookies
-
Contact Us
-
CnPack Website
-
Archiver
-
WAP
Member's CP Home
Edit Profile
Credits Transaction
Public User Groups
Buddy List
Main
Page Views
User Agents
Posts History
Top Forums
Top Threads
Post Ranking
Credit Ranking
Online Time
Team
Moderation Stats