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

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

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

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

领测软件测试网

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

关键字:uml

模板方法的延续

     在模板方法设计模式里我举了一个例子:教育部规定了新生报到流程的算法骨架,然后这个算法骨架中的一些关键步骤由各高校自由的去发挥。我在这个例子中将高校设为一个抽象类,各高校要实现的算法步骤都是抽象方法。我还给出了两个高校的实现代码:清华大学和北京大学。在这个例子中本没有什么问题,但是软件总是会变的。

    当有更多的高校要实现的时候,我们就会发现,很多高校的有些报到步骤实现是一样的,这就存在子类中有大量的重复代码,重复总是会出问题的。当然我们可以使用Martin Fowler的Pull Up Method(Refactoring P320)重构方法,将这些共同的部分推移到高校这个父类实现,并将这个抽象类改为virtual。

public abstract class 高校
{
public void 报到()
{
教务处报到();
缴费();
本院系报到();
教材科发教材();
}
protected abstract void 教务处报到();
//方法由抽象的更改为虚方法
protected virtual void 缴费()
{
//将这个方法在父类去实现,因为好多高校的实现都是这样的,避免重复
}
protected abstract 专业等信息 本院系报到();
protected abstract 教材 教材科发教材();
}


    但是,现在出现了这样的情况:A,B,C等几个大学的实现在某些步骤上有些相同,D,F在某些步骤的实现有些相同,也许你会说:这不好办,继续使用继承呗,将共同的东西往上推,并且在“高校类”和各高校实现的类中间插入一些类,这些类将提供共同的实现。好像是个很好的办法。来瞧一瞧:

延伸阅读

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

TAG: 继承 模式 浅析 设计


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

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