![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 76
小菜和大鸟的编程故事
JuneJunior
走在学习的路上
展开
-
设计模式,不只属于面向对象
文章开篇先说下什么是模式。设计模式的英文是Design Pattern,模式是Pattern的汉译。所谓Pattern就是一种规则,或是一种模型,或是一种习惯。Pattern这个东西到处都是,并不只有技术圏子里才有。比如: 文章有文章的Pattern。如新闻有新闻的Pattern(第一段话简述了整个新闻),诗歌总是抒情的,论文总是死板的,讲稿总是高谈的,漫画总是幽默的,……。 小说有小说的Pattern。比如, 武侠小说必然要整个武林大会,整几个NB的武功和大师转载 2023-11-20 11:12:13 · 59 阅读 · 0 评论 -
小菜和大鸟的编程故事之一:活字印刷-面向对象思想的先驱
话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片,眼看就要灭掉东吴,统一天下,曹操大悦,于是大宴众文武,在酒席间,曹操诗性大发,不觉吟道:“喝酒唱歌,人生真爽。样张再次出来请曹操过目,曹操细细一品,觉得还是不好,说:“人生真爽太过直接,应改问语才够意境,因此应改为‘对酒当歌,人生几何?而在活字印刷术之前,上面的四种特性都无法满足,要修改,必须重刻,要加字,必须重刻,要重新排列,必须重刻,印完这本书后,此版已无任何可再利用价值。第一,要改,只需更改要改之字,此为。转载 2023-11-20 11:14:33 · 58 阅读 · 0 评论 -
小菜和大鸟的编程故事之二:面试中代码无错就够了吗?
小菜一看,这个还不简单,三下五除二,10分钟不到,小菜写完了,感觉也没错误。可是半个月过去了,什么消息也没有,小菜很纳闷,我的代码实现了呀,为什么不给我机会呢。小菜找到工作三年的师哥大鸟,请教原因,大鸟问了题目和了解了小菜代码的细节以后,哈哈大笑,说道:“小菜呀小菜,你上当了,人家单位出题的意思,你完全都没明白,当然不会再联系你了”。到了人家单位,前台小姐给了他一份题目,上面写着,“请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。转载 2023-11-20 11:17:36 · 34 阅读 · 0 评论 -
小菜和大鸟的编程故事之三:代码规范和重构意识
大鸟说:“且先不说出题人的意思,单就你现在的代码,就有很多不足的地方需要改进。比如变量命名,你的命名就是ABCD,变量不带有任何具体含义,这是非常不规范的;判断分支,你这样的写法,意味着每个条件都要做判断,等于计算机做了三次无用功;数据输入有效性判断等,如果用户输入的是字符符号而不是数字怎么办?大鸟:“吼吼,不错,不错,改得很快嘛?至少在目前代码来说,实现计算器是没有问题了,但这样写出的代码是否合出题人的意思呢?“哦,说得没错,这个我以前听老师说过,可是从来没有在意过,我马上改,改完再给你看看。转载 2023-11-20 11:20:09 · 52 阅读 · 0 评论 -
小菜和大鸟的编程故事之四:抛弃复制 选择复用
这其实是用计算机的方式去思考,比如计算器这个程序,先要求输入两个数和运算符号,然后根据运算符号判断选择如何运算,得到结果,这本身没有错,但这样的思维却使得我们的程序只为满足实现当前的需求,程序不容易维护,不容易扩展,更不容易复用。大鸟:“小菜看来还是小菜呀,有人说初级程序员的工作就是Ctrl+C和Ctrl+V,这其实是非常不好的编码习惯,因为当你的代码中重复的代码多到一定程度,维护的时候,可能就是一场灾难。小菜:“鸟哥呀,我有点糊涂了,如何才能容易维护,容易扩展,又容易复用呢,能不能具体点?转载 2023-11-20 11:21:25 · 69 阅读 · 0 评论 -
小菜和大鸟的编程故事之五:业务和界面分离
口中说道:“如果你现在要我写一个Windows应用程序的计算器,我就可以复用这个运算类(Operation)了。大鸟:“不单是Windows程序,Web版程序需要运算可以用它,PDA,手机等需要移动系统的软件需要运算也可以用它呀。大鸟:“准确的说,就是让业务逻辑与界面逻辑分开,让它们之间的耦合度下降。大鸟:“慢慢来,有的东西好学了,你好好想想吧,我要去“魔兽”了,改时聊。大鸟:“哈,孺鸟可教也,:),写得不错,这样就完全把业务和界面分离了?小菜:“鸟哥,我写好了,你看看。小菜:“让我来试试看。转载 2023-11-20 11:22:57 · 51 阅读 · 0 评论 -
小菜和大鸟的编程故事之六:简单工厂模式之体验
大鸟:“写得很不错吗,大大超出我的想象了,你现在的问题其实就是如何去实例化对象的问题,哈,今天心情不错,再教你一招‘简单工厂模式’,也就是说,到底要实例化谁,将来会不会增加实例化的对象(比如增加开根运算),这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂,来,我们看看这个类如何写。大鸟: “哈,界面的实现就是这样的代码,不管你是控制台程序,Windows程序,Web程序,PDA或手机程序,都可以用这段代码来实现计算器的功能,当有一天我们需要更改加法运算,我们只需要改哪里?转载 2023-11-20 11:29:29 · 49 阅读 · 0 评论 -
小菜和大鸟的编程故事之七:工厂模式不好用了?
面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。加一个积分算法,构造方法有两个参数:条件和返点,让它继承CashSuper,再到现金工厂,哦,不对,,是收—费—对—象—生—成—工—厂里加满100积分10点的分支条件,再到界面稍加改动,就行了。“嗯,不错,那我问你,如果商场现在需要拆迁,没办法,只能跳楼价销售,商场的所有商品都需要打8折,打折后的价钱再每种商品满300送50,最后计总价的时候,商场还满1000送200,你说如何办?转载 2023-11-20 11:35:04 · 49 阅读 · 0 评论 -
小菜和大鸟的编程故事之八:初识“策略模式“
用不着这么客气,我只是觉得,没有人是天生就牛X的,有一些所谓的技术牛人总会在人面前说什么,‘你连这都不懂’,‘这还不简单了,你够笨的’等等说词。“我明白了,”小菜说,“我昨天写的CashSuper就是抽象策略,而正常收费CashNormal、打折收费CashRebate和返利收费CashReturn就是三个具体策略,也就是策略模式中说的具体算法,对吧?“大鸟,我用策略模式是实现了,但有些疑问,用了策略模式,则把分支判断又放回到客户端来了,这等于要改变需求算法时,还是要去更改客户端的程序呀?转载 2023-11-20 11:38:00 · 64 阅读 · 0 评论 -
小菜和大鸟的编程故事之九:反射--程序员的快乐
是呀,”大鸟道,“所以我们要考虑的就是可不可以不在程序里写明‘如果是打折就去实例化CashRebate类,如果是返利就去实例化CashReturn类’这样的语句,而是在当用户做了下拉选择后,再根据用户的选择去某个地方找应该要实例化的类是哪一个。“哦,我知道你的意思了,让它去读XML的配置文件,来生成这个下拉列表框,然后再根据用户的选择,通过反射实时的实例化出相应的算法对象,最终利用策略模式计算最终的结果。好的好的,我马上去写出来。“在做梦了吧,你当老板是傻瓜,会用反射才是正常水平,不会用的早应该走人了。转载 2023-11-20 11:42:04 · 37 阅读 · 0 评论 -
小菜和大鸟的编程故事之十:会修电脑不会修收音机?--谈设计模式原则
哈,小菜你这个比方打得好,”大鸟开心的说,“收音机就是典型的耦合过度,只要收音机出故障,不管是声音没有、不能调频、有杂音,反正都很难修理,不懂的人根本没法修,因为任何问题都可能涉及其它部件。我知道了,可以把PC电脑理解成是大的软件系统,任何部件如CPU、内存、硬盘,显卡等都可以理解为程序中封装的类或程序集,由于PC易插拨的方式,那么不管哪一个出问题,都可以在不影响别的部件的前题下进行修改或替换。“你试着找找内存条,内存大约是10公分长,2公分宽,上有多个小长方形集成电路块的长条,应该是竖插着的。转载 2023-11-20 11:43:35 · 53 阅读 · 0 评论 -
小菜和大鸟的编程故事之十一:三层架构 分层开发
大鸟继续说道,“现在电视节目《波士堂》里请来的嘉宾,全是中国的大企业家,许多人身家上亿,节目中都要求他们要有一个Boss秀,难道真的要把他们的才艺去和人家艺术家比吗,我看老板们唱歌虽很业余,但却也感觉得到他们那份认真和情趣——原来亿万富翁也是会唱歌,会跳舞,会食人间烟火的。”大鸟清了清嗓子,开始上课,“如果你的程序再也不修改了,或者就是改改打折的额度和返利额度,那么你的代码是足够可以了。,我一定要好好努力,成为编程专家。”,小菜说,“我们言归正传,你说我那程序用了反射后,还有什么需要修改的呢?转载 2023-11-20 11:44:35 · 57 阅读 · 0 评论 -
小菜和大鸟的编程故事之十二:无熟人难办事?--聊设计模式之迪米特法则
大鸟同情道,“不过现实社会就是这样的,他们又不认识你,不给你面子,也是很正常的。其实道理就是你今天碰到的这个例子,你第一天去公司,怎么会认识IT部的人呢,如果公司有很好的管理,那么应该是人事的小杨打个电话到IT部,告诉主管安排人给小菜你装电脑,就算开始是小张负责,他临时有急事,主管也可以再安排小李来处理,如果小李当时不忙的话。“我明白了,关键在于公司里可能没有IT主管,他们都是找到谁,就请谁去工作,如果都熟悉,有事可以协调着办,如果不熟悉,那么就会出现我碰到的情况了,有人忙死,有人空着,而我在等待。转载 2023-11-20 11:45:51 · 61 阅读 · 0 评论 -
小菜和大鸟的编程故事之十三:门面让程序员的程序更加体面
之前的代码是根据用户选择,分支判断执行相应的算法,现在整个算法类全部搬走,做到了业务与界面的分离;之前的代码由于全写在form里,所以要更换成Web方式,即C/S改为B/S非常困难,要全部重新写(注意真实的软件系统不会这么简单,所以简单复制不能解决问题),现在的代码由于把业务运算分离,所以界面的更改不会影响业务的编写。“说得没错,你的确是讲到点子上了,由于表示层UI需要与BLL有两个类进行交互,这是很麻烦,不过前辈们就想了了一个较好的办法,另一个设计模式,‘门面模式’(Facade)或叫外观模式”。转载 2023-11-20 13:47:39 · 58 阅读 · 0 评论