
设计模式
go2newlife
这个作者很懒,什么都没留下…
展开
-
小菜编程成长记(一 面试受挫——代码无错就是好?)
小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位。当投递了无数份简历后,终于收到了一个单位的面试通知,小菜欣喜若狂。 到了人家单位,前台小姐给了他一份题目,上面写着,“请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。” 小菜一看,这个还不简单,转载 2007-12-07 15:56:00 · 600 阅读 · 0 评论 -
小菜编程成长记(十 会修电脑不会修收音机?——聊设计模式原则)
(续上篇) 小菜学会了反射后,正在兴奋,想着大鸟的问题。此时,突然声音响起。 “死了都要爱,不淋漓尽致不痛快,感情多深只有这样,才足够表白。死了都要爱……” 原来是小菜的手机铃声,大鸟吓了一跳,说道:”你小子,用这歌做铃声,吓唬人啊!这要是在公司开大会时响起,你要被领导淋漓尽致爱死!MD,还在唱,快接!” 小菜很是郁闷,拿起手机一看,一个美女来的电转载 2007-12-07 16:16:00 · 850 阅读 · 0 评论 -
小菜编程成长记(七 工厂不好用了?)
(续上篇) 小菜心里想:“大鸟要我做的是一个商场收银软件,营业员根据客户购买商品单价和数量,向客户收费。这个很简单,两个文本框,输入单价和数量,再用个列表框 来记录商品的合计,最终用一个按钮来算出总额就可,对,还需要一个重置按钮来重新开始,不就行了?!”代码样例(可使用): 商场收银系统v1.0关键代码如下://声明一个double变量total来转载 2007-12-07 16:14:00 · 671 阅读 · 0 评论 -
小菜编程成长记(六 关于Flex的争论)
声明:本文略有广告之嫌,不过写此文的初衷却是因为对上篇博客引发争议的感想,所以看此文前不妨先看看上文的评论,感谢您的阅读,欢迎拍砖。 几天后,小菜跑到大鸟处,说道:“大鸟哥,今天看到一个网站,叫妙句网,是用来收藏好句子用的,网站本身没什么太多希奇,但它用的技术却是最近非常火的Flex技术,作者说他也就学了不到两个月就做出了这个网站,你说会不会是真的?如果真的是这样,我也想学学,毕转载 2007-12-07 16:13:00 · 711 阅读 · 0 评论 -
小菜编程成长记(二 代码规范、重构)
(续上篇) 大鸟说:“且先不说出题人的意思,单就你现在的代码,就有很多不足的地方需要改进。比如变量命名,你的命名就是ABCD,变量不带有任何具体含义,这是非 常不规范的;判断分支,你这样的写法,意味着每个条件都要做判断,等于计算机做了三次无用功;数据输入有效性判断等,如果用户输入的是字符符号而不是数字 怎么办?如果除数时,客户输入了0怎么办?这些都是可以改进的地方。” “哦,说得转载 2007-12-07 15:58:00 · 616 阅读 · 0 评论 -
责任链模式(Chain of Responsibility Pattern)
(1)应用:应用责任链模式是一种对象的行为模式【GOF95】。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。(2)角色抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口转载 2007-12-07 16:25:00 · 643 阅读 · 0 评论 -
观察者模式(Observer Pattern)
(1)应用:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己(2)角色: * 抽象主题(Subject)角色:主题角色把所有对观察考对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,主题角色又叫做抽象被观察者(Observab转载 2007-12-07 16:32:00 · 631 阅读 · 0 评论 -
小菜编程成长记(十三 有了门面,程序员的程序会更加体面!)
(续上篇) 大鸟说道:“实际上没有学过设计模式去理解三层架构会有失偏颇的,毕竟分层是更高一级别的模式,所谓的架构模式。不过在程序中,有意识的遵循设计原则,却也可以有效的做出好的设计。” “不要告诉我,刚才讲的‘迪米特法则’就会在分层中用得上?”小菜说。 “当然用得上,否则讲它干吗,你当我是在安慰你而临时编个法则来骗骗你呀?来,再来看看你上次写的代码。” 1转载 2007-12-07 16:23:00 · 832 阅读 · 0 评论 -
小菜编程成长记(十一 三层架构,分层开发)
(续上篇) “大鸟,我们继续讨论吧!”小菜很沮丧的说。 “小伙子,不会修收音机也是很正常的,没什么大不了的,用不着丧着一个脸。好象失恋一样,男人再强也要学会说‘不’。”大鸟安慰着说,“如果你的目标是要成为修理电器专家,那么你连收音机都不会修,那是很郁闷的事。但你现在的目标是什么?” “我想成为软件架构师,编程专家。”小菜毫不含糊的说。 “转载 2007-12-07 16:22:00 · 684 阅读 · 0 评论 -
小菜编程成长记(九 反射——程序员的快乐!)
(续上篇) “到底如何去改良策略模式呢?”小菜恳切地问道。 “你仔细观察过没有,你的代码,不管是用工厂模式写的,还是用策略模式写的,那个分支的switch依然去不掉。原因在哪里?”大鸟反问道。 “因为程序里有下拉选择,用户是有选择的,那么程序就必须要根据用户的选择来决定实例化哪一个子类对象。无论是在客户端窗体类编程还是到工厂类里编程,这个switc转载 2007-12-07 16:16:00 · 603 阅读 · 0 评论 -
小菜编程成长记(八 用“策略模式”是一种好策略)
(续上篇) 小菜次日来找大鸟,说:“《深入浅出设计模式》的第一章我看完了,它讲的是策略模式(Strategy)。『策略模式』定义了算法家族,分别封装起来,让它们之间可以互相替换, 此模式让算法的变化, 不会影响到使用算法的客户。看来商场收银系统应该考虑用策略模式?” “你问我?你说呢?”大鸟笑道,“商场收银时如何促销,用打折还是返利,其实都是一些算法,用工厂来生成算法对象,感转载 2007-12-07 16:15:00 · 564 阅读 · 0 评论 -
小菜编程成长记(五 体会简单工厂模式的美妙)
(续上篇) 次日,小菜再来找大鸟,问道:“你昨天说计算器这样的小程序还可以用到面向对象三大特性?继承和多态怎么可能用得上,我实在不可理解。” 大鸟:“小菜很有钻研精神吗?好,今天我让你功力加深一级。你先要考虑一下,你昨天写的这个代码,能否做到很灵活的可修改和扩展呢?” 小菜:“我已经把业务和界面分离了呀,这不是很灵活了吗?” 大鸟:“那我问你转载 2007-12-07 16:03:00 · 592 阅读 · 0 评论 -
小菜编程成长记(四 业务的封装)
续上篇) 小菜:“你的意思是分一个类出来? 哦,对的,让计算和显示分开。” 大鸟:“准确的说,就是让业务逻辑与界面逻辑分开,让它们之间的耦合度下降。只有分离开,才容易达到容易维护或扩展。” 小菜:“让我来试试看。” class Program { static void Main(string[] args)转载 2007-12-07 16:00:00 · 579 阅读 · 0 评论 -
小菜编程成长记(三 复制VS复用)
续上篇) 小菜:“我明白了,他说用任意一种面向对象语言实现,那意思就是要用面向对象的编程方法去实现,对吗?OK,这个我学过,只不过当时我没想到而已。” 大鸟:“所有编程初学者都会有这样的问题,就是碰到问题就直觉的用计算机能够理解的逻辑来描述和表达待解决的问题及具体的求解过程。这其实是用计算机的方 式去思考,比如计算器这个程序,先要求输入两个数和运算符号,然后根据运算符转载 2007-12-07 15:59:00 · 517 阅读 · 0 评论 -
小菜编程成长记(十二 无熟人难办事?——聊设计模式迪米特法则)
(续上篇) 次日傍晚,小菜敲开了大鸟家的门。 “回来啦!怎么样?第一天上班感受多吧。”大鸟关心的问道。 “感受真是多哦!!!”小菜一脸的不屑一顾。 “怎么了?受委屈了吗。说说看怎么会事?” “委屈谈不上,就感觉公司氛围不是很好。我一大早就到他们公司,正好我的主管出去了不在公司。人事处的小杨让我填了表后,就带我到IT部领转载 2007-12-07 16:23:00 · 550 阅读 · 0 评论