| | | | | | | [文章信息] | | | 作者: | 疾风之鹰 | | 时间: | 2004-10-24 | | 出处: | yesky | | 责任编辑: | 方舟 | |
| [文章导读] | | | 本文以一个在线课程项目为线索全景展现软件开发的各个步骤 | |
| |
|
| | | |
|
|
|
|
|
四、CoursesOnline系统设计
4.1 Design Pattern的选择和思考
在系统设计上,Design Pattern的选择是很重要的。因为正确的Design Pattern不仅在开发阶段可以让开发人员思路清晰得心应手,而且在维护阶段也不至于让维护人员抓狂。除此之外,对于系统的健壮和运行效率而言也起着举足轻重的作用。如果采用了错误的Design Pattern,那么对于系统来说就像是在错误的时间错误的地点与错误的敌人打了一场错误的战争。
下面以CoursesOnline系统学生注册时采用的两种不同的处理方法为例来简单说明选择Design Pattern的重要性。
学生在Client提交注册信息,包括登录帐号,登录口令,姓名,电话和Email五项内容。从数据库ER图中我们可以看到学生信息被分散在两张表里,也就是说服务器端有两个Entity Bean来存取学生的注册信息,一个为Actor,另一个为ActorInfo。
方法一:客户端直接与Entity Bean沟通以完成工作

方法二:客户端与Session Bean交互,由Session Bean与Entity Bean沟通以完成工作

方法一的设计虽然也能完成对学生注册的处理,但是客户端必须写所有的业务逻辑代码,而且由于客户端直接访问Entity Bean,不但造成了多次的网络roundtrip,使执行效率大幅下降,也使客户端与Entity Bean形成强耦合,日后不管修改客户端还是Entity Bean,都会牵一发而动全身,对系统的改造简直就是一场灾难。
方法二不但大幅降低了网络的roundtrip,而且Session Facade分隔了客户端和Entity Bean,Entity Bean对于客户端来说是透明的,客户端需要关心的只是Session Facade提供的接口。这样一来系统的可扩展性就得到了质的提升。
4.2 CoursesOnline系统示意图

|
|
|
|
|
|
|
|