Welcome 微信登录

首页 / 软件开发 / 数据结构与算法

设计模式的C++实现之适配器模式

设计模式的C++实现之适配器模式

设计模式的C++实现之适配器模式2013-08-03 csdn LCL_data解决的问题:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。比如说我的hp笔记本,美国产品,人家美国的电压是110V的,而我们中国的电压是220V,要在中国能使用,必须找个变压器转一下电压才可以。这个变压器就是个适配器。适配器模式有类适配器和对象适配器两种模式,我们将分别讨论。类适配器:由图中可以看出,Adap...
设计模式的C++实现之外观模式

设计模式的C++实现之外观模式

设计模式的C++实现之外观模式2013-08-03 csdn LCL_data概述想想我们小时候玩的四驱车,里面的构造很复杂,马达,舵机,电池组等等,而我们控制它却非常简单,只要打开电池开关,他就可以跑。我们其实不用知道它里面是如何工作,只要知道拨动开关它就可以工作就行了,这个开关其实就四驱车给我们的一个友好的组件,使得我们可以很方便的控制它。外观模式其实定义了一个高层接口,该接口为子系统中的一组接口提供一个一致的界面,使得这一子系统更加容易使用。类图和样...
设计模式的C++实现之原型模式

设计模式的C++实现之原型模式

设计模式的C++实现之原型模式2013-08-03 csdn LCL_data解决的问题:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这个其实和C++的拷贝构造函数的作用是一致的,实际上就是动态抽取当前对象运行时的状态。类图结构:客户(Client)角色:客户类提出创建对象的请求。抽象原型(Prototype)角色:这是一个抽象角色,通常由一个C#接口或抽象类实现。此角色给出所有的具体原型类所需的接口。在C#中,抽象原型角色通常实现了I...
设计模式的C++实现之装饰者模式

设计模式的C++实现之装饰者模式

设计模式的C++实现之装饰者模式2013-08-03 csdn LCL_data解决的问题:我们在装饰新家的时候买了几幅抽象画,买回来之后发现有些加上色彩艳丽的边框更适合我们,而有的加上玻璃罩之后更能符合我们的使用。那我们来怎么解决这个问题呢?他需要动态的给别的对象增加额外的职责,这就是装饰者模式的目的。我们可以通过继承的方式来给原对象增加新功能,但是装饰者模式采用组合的方式比生成子类更加灵活。类图及样例实现:在装饰模式中的各个角色有:抽象构件(Compo...
设计模式的C++实现之组合模式

设计模式的C++实现之组合模式

设计模式的C++实现之组合模式2013-08-03 csdn LCL_data解决的问题:我们PC用到的文件系统,其实就是我们数据结构里的树形结构,我们处理树中的每个节点时,其实不用考虑他是叶子节点还是根节点,因为他们的成员函数都是一样的,这个就是组合模式的精髓。他模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。将对象组合成树形结构以表示“部分-整体”的层次结构...
精益ALM分步指南

精益ALM分步指南

精益ALM分步指南2013-08-04 infoq 孙镜涛精益ALM听起来像一句空话。对于企业组织而言,ALM的采用并不是很成功。很多实现都缺乏支持和延续性,导致做出的努力付之东流。精益是一些伟大想法的集合,实现它需要对组织进行支持和投资。但不要因此就抗拒它,我并不是提议你和一个昂贵的管理咨询团队一起工作,也不是要改变任何事情。相反,我的本意是鼓励你借鉴这些想法。融合这些想法需要组织通过系统的、按步骤的方式实现软件交付,关注简单的变化,而不是采纳复杂的、不...
敏捷教练指导的另一种选择

敏捷教练指导的另一种选择

敏捷教练指导的另一种选择2013-08-04 infoq 赵震一介绍在过去的六年里,IT劳动力市场上出现了敏捷教练这个角色。我最近5年一直都在以这个角色工作着,大多数的工作都是在Suncorp完成的。Suncorp是一家拥有超过16000名雇员的澳大利亚保险及银行领域的大型公司。大家都知道Suncorp是采用敏捷的领导者,它也是敏捷帮助组织转型取得杰出成果的典型例子。早在2007年,Suncorp邀请我去帮助他们将大约2000人员的整个IT服务组织转型成敏...
企业系统集成点测试策略

企业系统集成点测试策略

企业系统集成点测试策略2013-08-04 infoq 熊节集成是企业应用系统中绕不开的话题。与外部系统的集成点不仅实现起来麻烦,更是难以测试。本文介绍了一种普遍适用的集成点测试策略,兼顾测试的覆盖程度、速度、可靠性和可重复性,为集成点的实现与测试建立一个通用的参考。背景本文作为例子介绍的系统是一个典型的JavaEE Web应用,基于Java 6和Spring开发,采用Maven构建。该系统需要以XML over HTTP的方式集成两个外部系统。该系统由一...
软件测试中的黑天鹅系列(一) 认识软件测试中的黑天鹅

软件测试中的黑天鹅系列(一) 认识软件测试中的黑天鹅

软件测试中的黑天鹅系列(一) 认识软件测试中的黑天鹅2013-08-04 邰晓梅 1. 软件测试中的“黑天鹅”几年前,我带领的一个测试小组遗漏了一个严重的bug到网上,当用户反馈这个bug后,我们对它进行了深入的分析和重现,最终所有人一致认为,这个bug能够发生实在是机缘巧合,因为它需要多个条件同时发生才有可能触发,比如“XX算法开关必须打开、XX算法开关又必须关闭、XX参数必须取某个特定值、用户的使用环境必须是XX个场...
软件测试中的黑天鹅(二) 黑天鹅发生的前后

软件测试中的黑天鹅(二) 黑天鹅发生的前后

软件测试中的黑天鹅(二) 黑天鹅发生的前后2013-08-04 infoq 邰晓梅1.历史与三重迷雾在“认识软件测试中黑天鹅”一文中,我描述了什么是软件测试中的黑天鹅及其特点,本文将探讨测试中的黑天鹅发生之前、之后、以及正在发生之中的故事。 《黑天鹅》一书的作者Nassim指出“历史是模糊的。你看到了结果,但看不到导致历史事件发生的幕后原因。”其实,测试何尝不是这样,假如把测试看成一个盒子,这个盒子也是模糊的...
全功能团队之数据篇

全功能团队之数据篇

全功能团队之数据篇2013-08-04 infoq 吴少博在《建设全功能团队》和《建设全功能团队——实践篇》两篇文章中,我的同事胡凯曾介绍过建设全功能团队的必要性和良好实践,此后在围绕这一话题的讨论中,很多人都分享了自己的理解,或看好,或看淡。在ThoughtWorks有许多团队一直在建设全功能团队方面实践着,在这篇文章中我希望与大家分享我从这些团队收集到的过去一年来的数据,以及更切身的理解。简短回顾全功能团队它不仅是由一专多能的多...
敏捷测试简介

敏捷测试简介

敏捷测试简介2013-08-05 infoq 朱少民时至今日,还讨论这样一个老话题,是否感觉老调重弹?因为两年前(2010年底)时任谷歌中国测试经理的段念先生就写了一篇文章《什么是敏捷软件测试》(刊登在InfoQ网站上[1]), 就已经谈到这个话题,“敏捷软件测试更多的是一种理念,而非过程”。在2011年,我自己也写了一篇文章《敏捷测试的思考和新发展》,刊登在《程序员》杂志上,谈到“在BDD、ATDD和TDD最根本的、共...
为你的集成需求选择合适的ESB

为你的集成需求选择合适的ESB

为你的集成需求选择合适的ESB2013-08-05 infoq 张卫滨公司内外的不同应用间需要进行相互通信。企业服务总线(Enterprise Service Bus,ESB)已经被视为支持应用集成的工具。但是ESB是什么呢?什么时候使用集成套件(integration suite)更为合适呢?下一个项目最合适的产品是什么?本文将会讲述为什么没有银弹(silver bullet)以及为何有时ESB可能也是错误的选择。对于项目的成功来讲,选择合适的产品是至关...
遗留系统的技术栈迁移

遗留系统的技术栈迁移

遗留系统的技术栈迁移2013-08-05 infoq 张逸什么是遗留系统(Legacy System)?根据维基百科的定义,遗留系统是一种旧的方法、旧的技术、旧的计算机系统或应用程序[1]。这一定义事实上并没有很好地揭露遗留系统的本质。我认为,遗留系统首先是一个还在运行和使用,但已步入软件生命周期衰老期的软件系统。它符合所谓的“奶牛规则”:奶牛逐渐衰老,最终无奶可挤;然而与此同时,饲养成本却在上升。这意味着遗留系统会逐渐随着时间的推...
用户实例:DubDubDeploy

用户实例:DubDubDeploy

用户实例:DubDubDeploy2013-08-05 infoq 陈菲最初DonteOrmsby联系我们的时候,仅仅是写了一封友好的信,说他发现一个非常棒的工具能简化ASP.Net的网站部署,并认为我们的读者可能感兴趣。经过进一步交谈,我们认为介绍DubDub部署最好的办法就是让Donte来给读者讲述他亲身所经历的故事。如果你知道某个产品对你非常有帮助而且愿意分享你的经验,请务必通知我们。不论是正式还是非正式的用户实例,我们都欢迎。JonathanAll...
自动化错误报告:通往更高软件质量的大门

自动化错误报告:通往更高软件质量的大门

自动化错误报告:通往更高软件质量的大门2013-08-05 infoq 奚亚伟无知是福,但是在处理软件bug的时候,这句话并不适用。软件质量专家会告诉我们,那些努力找出bug并且提高软件质量的公司可以得到客户更多的信任,得到更高的利润,降低开发和维护的费用,简化交付的流程,同时还可以避免客户的流失。软件质量是个大工程如果你觉得软件质量没有什么大不了的,那么就来看看Capers Jones在2011年6月软件质量杂志上发表的文章(这份杂志由美国质量协会主办)...
自动化构建:一致性关键之道

自动化构建:一致性关键之道

自动化构建:一致性关键之道2013-08-05 infoq 雷慈祥译介绍如果有那么一件事软件开发人员很在行(并非引述电影《黑客》),那一定是将通常需要人工完成的任务自动化。让计算机处理重复乏味的任务将使得大家生活得更轻松,这里我们讨论的是如何让大家专注于他们所关心的事情。然而,研发团队时常会忽略那个最有帮助的受众—他们自己。在为数众多的中小型软件作坊中,不存在自动化构建和发布工具。构建、交付准备环境、代码发布全由手工完成,同样还有运行测试、备份...
增强UML符号的提案

增强UML符号的提案

增强UML符号的提案2013-10-04 infoq Raul Rugiero需求与测试用例,特别是验收测试,是密切相关的。敏捷方法本身基于测试驱动方法,尤其强调这一点。可以增强UML用 例的符号以使增强后的UML工具可以正确地处理用例与测试之间连接。验收测试是设计的一部分"测试 驱动开发"或Dan North观点里的"行为驱动开发"是敏捷范式里最好的实践之一。当我第一次读到BDD的介绍 时,对文字模板的"...
详解为功能测试构建通用mock server系统

详解为功能测试构建通用mock server系统

详解为功能测试构建通用mock server系统2013-10-04 infoq 余昭辉mock在单元测试中已经众所周知。现今我们有各种功能强大而又好用的mock框架,可以很方便的解除单元测试中各种依 赖,这大大的降低了编写单元测试的难度。而测试驱动开发(TDD)更进一步将mock作为一种设计手段,来辅助识别出元素 之间交互的接口和职责。那么在功能测试(这里提到的功能测试指的是用户级测试)这个层次,是否有必要使用mock 呢?如果有必要又将如何构建呢?或者...
异常以及异常处理框架探析

异常以及异常处理框架探析

异常以及异常处理框架探析2013-10-04 IBM 王 建光概述一般情况下,企业级应用都对应着复杂的业务逻辑,为了保证系统的健壮,必然需要面对各种系统业务异常 和运行时异常。不好的异常处理方式容易造成应用程序逻辑混乱,脆弱而难于管理。应用程序中充斥着零散的异常 处理代码,使程序代码晦涩难懂、可读性差,并且难于维护。一个好的异常处理框架能为应用程序的异常处理提供 统一的处理视图,把异常处理从程序正常运行逻辑分离出来,以至于提供更加结构化以及可读性的程序架构...
<< 151 152 153 154 155 156 157 158 159 160 >>