- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
跟我学软件系统模块设计中的对象职责分配模式信息专家模式
对象职责分配模式---信息专家模式 对象职责分配模式---信息专家模式 在本讲您能了解如下内容 什么是信息专家模式 应用该模式所带来的优点 信息专家模式的应用示例 职责是协作完成还是独自完成 1、信息专家模式(Information Expert)----应该将职责分配给“信息专家”类 (1)它解决什么问题 对象(类)设计和职责分配的一般原则是什么?而信息专家模式能够指导开发者如何分配职责! (2)解决方案----“做事应该找懂行的专家来完成!” 设计对象(类)的时候,如果某个类拥有完成某个职责所需要的所有信息,那么这个职责就应该分配给这个类来实现 这个类就是完成这个职责的信息专家类。 为什么您生病了要找大夫,而不找我? 2、应用信息专家模式所带来的优点 (1)低耦合 由于对象完全采用自己的各个方面的信息,封装性比较好 (2)高内聚 行为分布在具有所需信息的类上,易于理解和维护。 3、信息专家模式的应用示例 (1)网上商店系统中的购物车(ShopCar)的实现问题 常见的网上商店里的购物车(ShopCar),需要让每种商品(Goods)只在购物车内出现一次,购买相同商品,只需要更新商品的数量即可。 (2)判断商品“是否相同”的职责由哪个类来承担呢? (3)应用信息专家模式指导该职责的分配 经过对业务分析后,得知可以根据商品的编号(goods_ID)唯一地区分不同的商品。 但商品编号(goods_ID)是唯一存在于商品类中的,所以根据信息专家模式,应该把比较商品是否相同的方法compareRepeatBuy放在商品类里。 4、信息专家模式的应用示例 (1)BBS论坛系统中的BBS信息发表的职责分配 (2)正确地理解和应用信息专家模式,能够为开发者提供类中的方法的合理设计方面的指导。 5、信息专家模式的应用示例 (1)连接数据库类的设计 应该把所有连接数据库的代码写到某个单独的类中,当数据库DAO层进行连接数据库的操作时,就找这个“信息专家”类。 (2)信息专家类的职责尽可能单一 此信息专家类的唯一职能就是连接数据库和断开数据库操作,而不应该包括其它的功能。 因此,没有“万能的专家”,“专”不仅体现在“业务类型”方面,也体现在“职责单一”方面。 6、职责单一的信息专家模式的应用示例 (1)购物车类的设计 在一个购物车类中可以完成许多功能操作,如计算金额,因为这个类包含了“计算金额”所需要的所有信息。 (2)系统需要增加一个发送邮件的功能 但是如果要在客户购买某个商品后,系统需要增加一个发送邮件的功能,那么该功能是否也要在购物车类中完成呢?如果是这样,购物车类就包办了太多的职责! 可以把这个发送邮件的功能交给更专业的类,比如在项目中增加一个EmailSender类 (3)代码示例 7、职责是由专家“独自”承担还是由不同的专家“协作”承担? (1)业务数据是分布在不同的类对象实例中的 由于职责的履行需要相关方面的信息(业务数据),而信息往往是分布在不同的类对象实例中的。 (2)在进行类的职责分配时,所应该注意的一个问题 职责是由信息专家类“独自”完成还是应该由不同的信息专家类“协作”完成呢? 假如某人得了“绝症”,他是找一个大夫还是多个大夫看病好呢? (3)如何才能更好地分配职责呢? 分析各个类(或者说是概念模型、业务域模型),那些包含能完成职责所需要的所有的信息类,该类就可以被认为是信息专家类。 如果能够找出这样的类,则应该交由它独立完成,否则应该协作完成! (4)“独自”还是“协作”承担 不过使用专家模式的时候,一定要仔细判断什么样的职责是应该只由一个专家类完成,而什么样的职责应该由不同的专家类协作完成 8、 “独自”还是“协作”承担的示例 下面以网上商城系统中的商品信息实体类的职责分配为示例。 (1)在该类中设计了一个保存商品信息实体类的对象信息的方法saveGoodsInfo (2)但GoodsInfoPO类的代码在设计和编程实现时出现了一个职责分配方面的错误 为什么呢? 9、 “独自”还是“协作”承担的示例 (1)另一个问题的示例 下面再以一个收发邮件的示例说明信息专家模式在应用中所应该注意的问题---- “独自”还是“协作”承担 (2)代码示例 (3)不良好的设计 上面的代码出现了一个职责分配的错误-----因为上面的head、body和address都是属于邮件自身的属性,但是这个类却有一个叫做sendMail的方法,错误就在这个方法中。 在现实生活中,我们发送邮件的时候,是通过邮递员来进行的,绝对没有一封信会长上翅膀自己飞到收信人的手中。 在程序中也是一样,一
您可能关注的文档
- 试论我国新时期行政精神的培养.doc
- 试论我国现行法律法规有关用人单位违法解除劳动合同的法律责任及存在的缺陷和完善建议.doc
- 试论房地产开发企业劳资关系的完善人力资源管理论文.doc
- 试论民族地区生态环境与经济开发的协调发展.docx
- 试论新课程背景下的现代学校管理(完整版).doc
- 试论行政监督中的舆论监督--网络舆论监督.doc
- 试论铁路车间安全管理.doc
- 试验室计量认证的基础常识及质量参考所触及的内容讲解.doc
- 试谈公文的写作修改和材料积累.doc
- 试验室计量认证技术要求.doc
- 中学师德工作计划精选(7篇).pdf
- 2024-2025学年统编版语文九年级上册第11课《岳阳楼记》教学设计.pdf
- 西南11J312楼地面[1]_原创精品文档.pdf
- 2024_2025学年高中历史第八单元当今世界政治格局的多极化趋势第26课世界多极化趋势的出现课时作业含解析新人教版必修1.doc
- 2024_2025学年新教材高中地理第3单元从圈层作用看地貌与土壤单元活动学用地形图探究地貌特征练习含解析鲁教版必修第一册.doc
- 河南湿封市五县联考2024_2025学年高二历史下学期期末考试试题扫描版.doc
- 陕西省安康市高新中学2025届高三生物上学期开学考试试题.doc
- 贵州省兴仁市凤凰中学2024_2025学年高一地理上学期第二次月考试题含解析.doc
- 2024高一物理寒假作业同步练习题牛顿运动定律含解析.docx
- 全国工程勘察设计行业优秀工程勘察设计行业奖市政公用....pdf
文档评论(0)