成长的烦恼:初涉设计模式

设计

  相信很多人都喜欢看这部喜剧,我是很喜欢,里面包括了成长中的悲欢离合,你在其中可以寻找你成长的足迹。
编程成长之路何尝不是这样的呢?

故事就是从这里开始的。

小王是刚毕业的学生,进入一家软件公司,薪水不错。年轻人充满干劲,有着远大的目标。前三天参加了公司的培训,三天没写代码了,手痒。第四天,项目经理走过来说:“小王,写一个整型链表的排序算法吧,我们在项目中要用。”

冒泡是小王在脑海中第一个浮现出来的。翻开某某圣经,摘了段冒泡算法,修改了一些代码的书写风格(有些圣经代码风格不咱的),代码大致如此:

BOOL Sort(ListInt)

{

冒泡排序算法

{

比较语句

}

return TRUE;

}

小王检查了一下,还用测试用例测试了一把,确保万无一失,交给了经理。经理说了句不错,乐坏了小王。

第二天,经理跑过来说:“把你昨天的代码改一下,现在要比较浮点型了,还有能否速度上提高一点?”

小王上网查了一下,选择了快速排序算法,不忘把昨天写的备份了一把,然后在昨天函数的基础上改。代码大致如此:

BOOL Sort(ListInt)

{

快速排序算法

{

比较语句

}

return TRUE;

}

Easy吗?测试交差。

一年后……

镜头切换……

小王坐在计算机前熟练的编写着程序,而且旁边还放着本《设计模式》的书。知道了面向对象编程,知道了设计模式,但理解还不够深刻。排序算法也演变成比较文件名了。

一日经理过来说:“小王,现在我们的排序算法要用在嵌入式平台中,你做一些算法的研究工作,给出一份报告。”

这不是策略模式的典型应用吗?定义一系列的算法,把它们一个个封装起来,并且使他们可以相互转换。

小王画了张UML图:

这样,小王把一些流行的排序算法都试了一遍,总共有七八种,换一种算法速度也很快,新的算法插入到系统中,老算法从系统中"退休",实现插件式替换。

CSort *pSort = new CBubbleSort;

CClient.ListSort(pSort);

如果要改成快速排序,只要如此:

CSort *pSort = new CQuickSort;

CClient.ListSort(pSort);

测试交差,当然经理自己也有想法,又让小王试了另外的几个算法,小王都能轻松的完成。策略模式的作用在这里淋漓尽致的发挥了,小王心里特别有成就感。

过了些日子,客户提出需要按文件名、日期进行排序,小王觉得这还是比较简单的,更改了一下UML图:

改代码的主要工作是copy-paste,就四个函数,也就很快完成了。

客户的需求是不会停止的,为了加强功能,提出需要按文件大小、文件的类型排序,天知道客户还会提出什么要求。

“再也不能这样活”,小王听着歌,陷入了沉思。

“排序的算法和比较算法分开来会如何呢?把它们脱耦,使得二者可以独立地变化。这句话怎么这么熟悉,我肯定在哪里看到过。”小王忙翻开《设计模式》,开始查阅。

“Got it,这不就是桥梁模式(Bridge)。”一阵欣喜,马上就干。半个小时后,UML图出来了,如下:

客户端代码如下:

CSort *pSort = new CQuickSort;

CCompareType *pType = new CNameCompare;

pSort->SetType(pType);

pSort->Sort(pList);

哈哈,客户们,你们尽管提要求吧。

时间: 2024-10-27 11:03:54

成长的烦恼:初涉设计模式的相关文章

成长的烦恼

图为:康盛公司副总裁袁兆江 DoNews 6月8日特稿(记者 向霜)在正式被纳入腾讯麾下之后,康盛开始和腾讯一样,将很多时间用来思考"开放"二字. 如果说2005年和2011年的这两次开放,分别实现了降低建站门槛.构建云平台的目的,那么自2012年4月开始的第三次开放的目的,则是要构建社区开放平台上的"苹果商店(APP Store)"在为站长群体提供门类清晰的应用内容的同时,让更多的第三方开发者进入开放平台的产业链,来满足站长的多元化.细分化需求. 成长的烦恼 在康

我国云计算快速发展遭遇“成长的烦恼”

本文讲的是我国云计算快速发展遭遇"成长的烦恼",事件背景:2007年中国移动启动"大云(BigCloud)"计划,致力于如何满足移动自身支撑系统对高性能.低成本.可扩展.高可靠性的IT计算和存储的需要.2011年发改委重金扶持云计算,首批牵头企业名单圈定,扶持资金规模或将达到15亿元. 2011年8月31日年中国电信正式对外发布天翼云计算.品牌以及解决方案.2012年3月22日-24日,中国电信推出的天翼云计算将在北京招开的云博会上亮相. Enfodesk易观智库研

行业网站面临瓶颈:如何摆脱成长的烦恼

中介交易 SEO诊断 淘宝客 云主机 技术大厅 在过去的一年中,主要以广告为盈利手段的行业网站正在面临发展的瓶颈.由于广告主广告投放量增速放缓,加上受到区域和会员规模的限制,资本对这些行业网站的盈利预期正在降低.如今,中小行业网站正在谋求新的获利增长点,靠专业领域广告投放为主要盈利来源的业务模式已经遇到严重的挑战. 困境一 资源分散,盈利模式单一 问题:从中国目前的现状看,B2B网站远没有B2C火.行业B2B网站虽然市场需求旺盛,却存在平台大.门槛高.信息容易被淹没,专业性强而求生艰难的困境.究

一周电视点击《成长的烦恼》童星长大烦恼依然

本周电视榜的冠军是<成长的烦恼>,这部当年红极一时的情境喜剧,如今上榜却令人伤感.在剧中饰演伯纳的男星安德鲁·克尼格自杀身亡,年仅41岁.很多童星在长大后的境遇都令人烦恼,很少有人可以在长大后依旧保持当年的人气.而过早的接触了名利,多少也让童星们的心境在长大成人期间的烦恼来得比一般人更为猛烈.走过这道坎的,多数归于平凡,少数继续绚烂.没走过,就常常在得失间挣扎了.比如现今台湾第一童星小小彬的父亲小彬彬,当年也是红极一时的童星,结果生意失败,妻子远走,最后不得不再让两个儿子重复自己的童星路,赚取

中投挺进大宗商品市场缺投资型人才被视为成长的烦恼

踩着经济复苏的节拍,中国主权财富基金--中国投资有限责任公司(简称中投)最近频频出手.21日,亚洲最大的农产品.大宗工业原料供应商之一来宝集团公告称,中投将以8.5亿美元的总价格收购该公司12.91%的股权.专家分析,中投最新的举动将扩大中国在全球大宗商品市场的布局. 中投出手大宗商品 来宝集团在21日发布的公告中称,集团将通过私人配售方式,以每股2.1137新元的价格向中投出售5.73亿股股票,这笔交易的总价约为8.5亿美元.此次售股中,4.38亿股为新发行股,另有1.35亿股来自与集团创始人

必由学:用软件开发云解决成长的烦恼

教育是一个永恒的研究课题,其重要性不须赘述.不管是哪种教育理念碰撞,最终都会落实在家庭教育及学校教育上来.这个庞大的教育体系,从来都是以感性的触角来探索.是否有一种方法:可以用数据或者科学的模型来完善我们对孩子的认识,从而让学校与孩子或者家长与孩子建立一种更为良性的交互模式? 快速成长的必由学:开拓教育数据化模式 大连必由学教育网络股份有限公司(以下简称"必由学")正在探索这种教育数据诊断检测模式,其学习诊断系统正应用于大连八中与大连周水子小学等中小学. 大连八中利用学习诊断系统中丰富

“网络文学”面临三大“成长的烦恼”:质量需要提升

新华网杭州1月8日电(记者冯源)南派三叔和<盗墓笔记>.流潋紫和<甄嬛传>.桐华和<步步惊心>--目前活跃在国内各大主流文学网站的浙江网络作家多达 900余人.7日成立的浙江省网络作家协会,将这些无组织的作家们聚合在一起,以促进网络文学更好发展.成长迅猛,"烦恼"有三"在这个江湖里你们才是英雄."浙江省作协主席麦家7日当选为浙江省网络作家协会名誉主席,他笑称这是个"自取其辱"的头衔,因为显得自己已经老了.&qu

CNN:Google+遭遇成长的烦恼

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 导语:美国CNN网站今天撰文称,虽然Google+社交服务推出之初受到了普遍好评,但由于增速过快,使之在技术和功能等方面遭遇了一些成长的烦恼. 以下为文章全文: 发展迅猛 自从6月末发布以来,Google+已经在科技行业引发了很多讨论.外界反响普遍比较积极,各大科技博客都祝贺谷歌开发出了一款更加简洁而强大的Facebook替代产品.但前进的道

植入式广告在当下中国遭遇“成长的烦恼”

"请不要在广告中插播小品." --虎年春晚,小品<捐助>因植入大量直白的广告,而遭 网友如此调侃.短短21分32秒的小品里,"搜狗"被反复强调,"搜狐"被提到6次,"三亚旅游"出来凑了热闹,"国窖1573"也多次露脸-- <捐助>只是个缩影.稍微留意便能发现,春晚的热门节目里,植入式广告无孔不入."哥看的不是春晚,是广告."网友戏言.虎年初春,有关春晚应该娱乐国人

风电超速成长的烦恼 可再生能源数据暂无统计

"目前国内实行的风电定价不够准确,需要进一步细化."在6月19日于北京召开的中国能源战略与"十二五"能源发展论坛上,国家发展和改革委员会能源研究所副所长王仲颖表示. 可再生能源数据暂无统计 "虽然我们做不到像德国一样,一个风机一个电价,但是我们会尽量往这个方向发展,对风电区域电价做更多的细化."王仲颖说,"只有四个电价对发电企业而言是不公平的,因为不同区域的发电成本是不同的.中国风力发电情况复杂,哪怕是邻近区域,在风力的大小.平均发电时