您的位置:首页 > 运维架构 > 网站架构

TheBeerHouse 网站项目学习笔记(5)---架构设计

2009-03-07 10:39 656 查看
前述讨论: TheBeerHouse 网站项目学习笔记(1)----换肤技术

TheBeerHouse 网站项目学习笔记(2)----个性化管理

TheBeerHouse 网站项目学习笔记(3)----安全管理(上)

TheBeerHouse 网站项目学习笔记(4)----安全管理(下)

摘要:TheBeerHouse整个网站是属于CMS(Content Management System)架构的系统,即基于内容的网站设计,这是网站设计最普遍的一种架构.在此网站的设计中,为什么需要用到许多抽象基类,为什么需要各种看似让人难以理解的属性和成员变量,设计意图是什么,这么设计有什么好处等等这类问题,都是值得我们思考和探讨的问题.我们将从层次关系、类图关系、设计意图这几个方面讨论上述提出的问题.

一. 层次关系

protected static ArticlesElement Settings // [$1] ,再追将追到下面重要说明中的 [$2]和[$3]记号中

{

{ return Globals.Settings.Articles; }

}
这个属性将返回一个ArticlesElement配置类的实例,那么这个属性到底有什么作用?我们知道,在整个网站的运行过程中都会有各种参数设置的,这些设置都可以通过前述TheBeerHouse 网站项目学习笔记(2)----个性化管理 中介绍的自定义配置节进行操作,那么我们就可以在网站运行期间动态的去读这些配置信息,比如"是否启用缓存","每页显示记录数","RSS阅读器的显示数目"等这些设置都可以运行时访问并修改,前句说的"运行时访问"操作大多集中在BaseArticle的三个子类上(Article,Category,Comment),因此,BaseArticle.Settings大多作在其子类中作为判断下一步行为的依据而存在.比如在Article类中有如下的判断语句:

if (BaseArticle.Settings.EnableCaching && BizObject.Cache[key] != null)

{

articles = (List<Article>)BizObject.Cache[key];

}

else ...............

以上的BaseArticle.Settings.EnableCaching就是在子类进行文章获取的时候先判读是否网站的"启用缓存" 开关开启,如果开启那么就到缓存中直接去取数据.

以上就是Setting属性存在的价值,那么还需要强调的就是此三个子类都需要这些开关,所以我们就把Setting属性做到了BaseArticle类中去,这么做当然是符合代码复用原则的.

以上是逻辑层类设计的意图和相互关系,其实我们在认真分析这些类的关系后,还应该多思考为什么作者要这么设计,这么设计对于系统弹性会带来哪些好处,这么设计我自己能否掌握,在今后的设计中如何借鉴或模仿。

那么下篇将继续介绍数据层设计的意图和类关系,并介绍些设计技巧...........
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: