首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计模式问题

设计模式问题
EN

Stack Overflow用户
提问于 2011-03-10 21:57:52
回答 1查看 226关注 0票数 0

我的当前应用程序有一个DataMgr类,我在其中放置所有与数据相关的内容。这个类最近变得太大了,为了便于维护,我想把它分成更小的部分。

这就是我所想的:

  • 创建一个AbstractDataMgr类,该类将具有将在应用程序中任何地方访问的所有变量。例如,包含所有用户的usersList ArrayCollection。
  • --所有较小的DataMgr片段--将扩展AbstractDataMgr。例如,扩展了UsersDataMgr的AbstractDataMgr类。这样,UsersDataMgr就可以在AbstractDataMgr中加载和填充usersList。另一个例子是SessionDataMgr类,它关心在我的应用程序中发生的一些播放会话.

我的问题是:

  1. I在正确的轨道上吗?
  2. 我想把每个较小的DataMgr类放在一个单独的模块中,以加快编译时间。这样,当我编译SessionsModule时,它就不会看到UsersModule,从而有更少的编译时间。

这就是我启动这个线程的问题:当在SessionsModule中时,如何从UsersDataMgr获取用户信息(例如,通过调用函数getUserData),而不必在SessionsDataMgr中导入UsersDataMgr。因为如果我导入了它,那么它将在SessionsDataMgr中编译.我不想要的。

我希望我没有迷惑你,我希望我能找到一些帮助。

更新1:

因此,基本的问题是,我有一个很大的应用程序,在我来之前设计得很糟糕。现在我正努力让事情变得更好更容易。

目前,编译完整的应用程序需要很长时间(大约3-3:30分钟)。这是由多个问题造成的: 1-框架中的文件太多,每次编译应用程序时都需要检查更改。2-其中一些文件包含大量数据(例如,其中一个信息表被硬编码到一个大小为7.5MB的文件中的一个大fat数组中)。

因此,目前我需要很长时间来修复bug,这是因为编译时间很长。因此,我尝试通过将应用程序分解为模块来解决这个问题。在创建了三个模块之后,我发现每个模块的编译时间也很长(大约2分钟)。

除了这个问题,现在不是一个大型的主权财富基金,我有另外3个大的主权财富基金。因此,我决定从这些模块中删除完整的框架,并且只包含所需的文件。一开始一切都很好直到我加入了DataMgr.在此之后,我必须包含所有的框架,以便在编译过程中没有bug。这是因为DataMgr在其中导入了很多框架。

因此,我解决这个问题的第二步是划分DataMgr。我喜欢你的建议,我正打算这么做.不过,我仍有一个未回答的问题:

我有模块和划分DataMgr的意图是,我不想在每个模块中包含完整的框架。相反,只有所需的文件。但是,如果在SessionsDataMgr模块中,我会调用:

UsersDataMgr.getInstance().getUserInfo( userId );

这意味着我必须在UsersDataMgr中导入SessionsDataMgr.这也意味着(如果我理解正确的话)在编译UsersDataMgr时,编译器将检查SessionsModule的所有文件,但也将检查SessionsDataMgr中的所有文件。这将增加swf的文件大小,并将增加编译时间。

correctly?

  • Is
  • 是我对事情的理解--解决这个问题的解决方案--能够完全分离两个模块,但在某个时候能够将用户函数从另一个模块??

中分离出来。

很抱歉给你这么长时间的回复,谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2011-03-11 15:41:42

从它的声音来看,您的DataMgr类确实试图做得太多了。把它分开绝对是可行的方法。

抽象类旨在提供所有具体实现所需的功能。要提供全局数据访问,您要寻找的设计模式是

如何从SessionsModule获取用户信息

代码语言:javascript
复制
UserDataProvider.getInstance().getAllUsers();
UserDataProvider.getInstance().getUserDetails(UserId:String);

希望这能让你走上正轨!如果您能够更多地分享关于您的应用程序和DataMgr的其他职责的细节,我很乐意帮助您制定一个干净、高效的设计。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5266404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档