• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

浅析设计模式之策略模式—:为什么总是继承[2]

发布: 2009-11-03 11:04 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 27次 | 进入软件测试论坛讨论

领测软件测试网

浅析设计模式之策略模式—:为什么总是继承[2]  uml模型

关键字:uml

    重复的代码确实减少了很多,但是还有一些重复(心里在默默的骂道:TMD,为什么C#不支持多继承,不然我就可以消除重复了),也许你还在自我陶醉的欣赏着自己多么完美的类继承层次,在那里感慨OO的强大。但是随着具体的高校越来越多,而且有的高校的报到步骤居然要发生改变,你小心的在中间那一层添加新的类,并将一些高校的实现转移,每一次你都非常小心(这个系统正在高速的运转,每改错一步,就有多少莘莘学子入不了学)。你心里终于对OO不满起来:为什么,为什么大家都说OO是救世主,但是却救不了我。答案是因为你将OO的设计原则遗忘在课本里了。开闭原则、优先使用组合,你还记得吗?

    在我们很多OO程序员的脑子里总是存在这样一个观念:没有继承的程序不是OO的程序,看到重复总是想到继承。当初我也是这样想的,有的时候看到自己画的庞大的继承类图,心里在乐呵呵的笑。可继承总是不给面子,一个小小的变化就将这个看似稳定的体系弄的支离破碎。

    还是回到我们的例子,在这个例子中变化的是各高校的报到步骤,本着发现变化、封装变化、隔离变化的原则我们将报到的步骤分离出来,独立成类。

    这样我们就可以复用这些步骤了,有新的步骤实现只要添加更多的子类,并不需要修改原来的代码。(作业:在继续阅读之前根据上面的类图自己写出实现的代码来)这就是所谓的策略设计模式:策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于算法的客户(DP)。

    策略模式有三种参与者:

    一、 Context 这个类保存了对策略的引用,并且调用实际的策略实现,有可能还提供一个接口,让策略可以访问它内部的数据,在这里就是我们的“高校”类。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 继承 模式 浅析 设计


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网