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类中去,这么做当然是符合代码复用原则的.
以上是逻辑层类设计的意图和相互关系,其实我们在认真分析这些类的关系后,还应该多思考为什么作者要这么设计,这么设计对于系统弹性会带来哪些好处,这么设计我自己能否掌握,在今后的设计中如何借鉴或模仿。
那么下篇将继续介绍数据层设计的意图和类关系,并介绍些设计技巧...........
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类中去,这么做当然是符合代码复用原则的.
以上是逻辑层类设计的意图和相互关系,其实我们在认真分析这些类的关系后,还应该多思考为什么作者要这么设计,这么设计对于系统弹性会带来哪些好处,这么设计我自己能否掌握,在今后的设计中如何借鉴或模仿。
那么下篇将继续介绍数据层设计的意图和类关系,并介绍些设计技巧...........
相关文章推荐
- TheBeerHouse 网站项目学习笔记(2)----个性化管理
- TheBeerHouse 网站项目学习笔记(4)----安全管理(下)
- [转]TheBeerHouse 网站项目学习笔记(1)----换肤技术
- TheBeerHouse 网站项目学习笔记(1)----换肤技术
- TheBeerHouse 网站项目学习笔记(3)----安全管理(上)
- The Data Warehouse ETL Toolkit学习笔记-架构(规划与设计主线)
- 用微软.NET架构企业解决方案 学习笔记(三)设计原则
- 学习笔记3:《大型网站技术架构 核心原理与案例分析》之 大型网站架构模式
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- 开始学习TheBeerHouse
- 领域驱动设计-学习笔记 分层架构
- Qt学习笔记,Qt程序架构设计要旨
- 微信公号“架构师之路”学习笔记(三)-MQ消息可达性_幂等性_延时性架构设计(应用场景、可靠投递、流量冲击)
- 学习笔记:架构 移动应用架构 网络层设计方案(三)
- 系统设计与架构笔记:对我新公司网站的技术架构初解
- 网上图书商城项目学习笔记-002登录页面的静态设计
- java学习——架构的设计是项目的核心
- 系统设计与架构笔记:对我新公司网站的技术架构初解
- NET 应用架构指导 V2 学习笔记(十七) 组件设计指导
- NET 应用架构指导 V2 学习笔记(二十) 业务组件设计指导