Discuz!NT控件剖析之左侧导航控件
这些关于Discuz!NT的文章不是要帮助大家把这个项目中所有的程序逻辑都解释一遭 (我 好了,不扯了。开始今天的话题吧! 首先把这个聚合项目的架构图放出来,以便在下面的代码解释阶段详加说明:
计背景:早在RC之前聚合功能还比较弱化时,系统结构比较简单,只用了一个website 类就聚集了大部分的功能调用。但在快速开发完成之后陆续又加入了不少新功能,导致类的名 称(website) 与所聚合提供的功能已不完全应用相符 (代码已过度膨胀) ,所以重构的任务已 变得非常紧迫了。 但用什么方式,因为系统聚合时是按内容类型来聚合功能页面并决定显示方式的。而这里 的内容类型在大概可分为(论坛主题,相册,图片,空间文章(及最新回复)等)。为了尽量 简化系统设计时的复杂度,这里只按内容所属的大类(论坛,空间,相册等)来进行简单的初 步规划,这就产生出来上面图片所说的类AggregationData,SpaceAggregationData, AlbumAggregationData.cs,ForumAggregationData.cs 看来这里完全可以将它们看为是四个子系统了,同时也可以直接将相应的前台显示控制逻 辑与这里面的相关子系统相联,但这就会少了一层封装在里面,另外这四个子系统类 (这里暂 且这么说吧之间)如果交互协为也需要有这么一个层以避免直接子系统之间的直接函数调用。 所以这里使用了facade来简单的封装这一层。 也就是如下的代码段了: AggregationFacade.cs private static AggregationData __baseAggregationData; private static ForumAggregationData __forumAggregationData; private static SpaceAggregationData __spaceAggregationData; private static AlbumAggregationData __albumAggregationData; private static PhotoAggregationData __photoAggregationData; static AggregationFacade() {   |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |