快速业务通道

Discuz!NT控件剖析之左侧导航控件

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-11

这些关于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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号