小菜编程成长记系列

网上一位叫慈龙的朋友帮我把之前的《小菜编程成长记》整理成了PDF文档,非常感谢他的工作。尽管此系列还没有写完,此前的文章也有不少瑕疵,不过如果此PDF可以让更多的朋友喜欢上面向对象设计、喜欢上设计模式、开始加入学习应用设计模式的行列来,那我还是非常愿意此系列文章的推广的,毕竟通过对话的方式来入门会相对容易些。

下载:戏说面向对象程序设计C#版

以下是博客文章目录链接:

代序 四大发明之活字印刷——面向对象思想的胜利

第一章 面试受挫——代码无错就是好?

第二章 代码规范、重构

第三章 复制VS复用

第四章 业务的封装

第五章 体会简单工厂模式的美妙

第六章 工厂不好用了?

第七章 用“策略模式”是一种好策略

第八章 反射——程序员的快乐!

第九章 会修电脑不会修收音机?——聊设计模式原则

第十章 三层架构,分层开发

第十一章 无熟人难办事?——聊设计模式迪米特法则

第十二章 有了门面,程序员的程序会更加体面

第十三章 设计模式不能戏说!设计模式怎就不能戏说?

posted on 2007-04-02 21:34 伍迷 阅读(32200) 评论(102) 编辑 收藏

评论

#1楼  回复 引用 查看   

楼主写得太好了,看完之后感触颇多.
套用一句老话:革命尚未成功,诸君仍需努力!
2007-04-03 10:32 | jailu      

#2楼  回复 引用 查看   

继续呀,我们期待中.......

写得很好,一看就懂。
2007-04-09 10:05 | 金色海洋(jyk)      

#3楼  回复 引用   

呵呵,好久没见下文了,楼主准备就此打住吗?
2007-04-11 22:47 | snowdoggie[未注册用户]

#4楼[楼主]  回复 引用 查看   

@snowdoggie
不会停止。主要现在事情比较多,没空去思考和写作,加上我也打算好好构思其它的设计模式如何用比较通俗的事例来展现,这需要时间。不好意思
2007-04-12 14:06 | 伍迷      

#5楼  回复 引用   

呵呵,加油加油,静候佳音
2007-04-13 16:41 | snowdoggie[未注册用户]

#6楼  回复 引用   

  如果是我是QD4我的QQ号变了请重新加我的号178262942,如果你不是我在上海的友人,你起名伍迷是什么意思。
2007-04-23 12:49 | QD4[未注册用户]

#7楼  回复 引用   

 请问你是QD C如果是我是QD4我的QQ号变了请重新加我的号:178262942
2007-04-23 12:51 | QD4[未注册用户]

#8楼[楼主]  回复 引用 查看   

@QD4
Yes,我就是QD1,老友,加你了
2007-04-23 13:31 | 伍迷      

#9楼  回复 引用   

啥时候弄个VB.net版的那俺就太感谢了
2007-04-23 17:10 | 懵懂[未注册用户]

#10楼[楼主]  回复 引用 查看   

@懵懂
这个其实是非常容易。
http://www.kamalpatel.net/ConvertCSharp2VB.aspx
不会让你失望的。
2007-04-23 20:58 | 伍迷      

#11楼  回复 引用   

有下文吗,写的太好了,
2007-04-26 12:30 | sui[未注册用户]

#12楼  回复 引用   

好,真的很好,继续!
2007-04-30 08:46 | 读者[未注册用户]

#13楼  回复 引用   

谢谢大大.写的真好...收藏了.
2007-05-06 17:48 | scotoma[未注册用户]

#14楼  回复 引用   

昨晚偶遇小菜编程成长记系列,非常有意思,一口气看完了,期待楼主继续。
2007-05-10 11:14 | caipei

#15楼  回复 引用   

请问可以转载么?
2007-05-26 19:26 | Fallout[未注册用户]

#16楼[楼主]  回复 引用 查看   

@Fallout
声明出处就可以了,谢谢。
2007-05-26 20:52 | 伍迷      

#17楼  回复 引用 查看   

人才.爱死你了.做了一年外包,没技术含量.正打算从头学习这些玩意.这样的方式我最喜欢了.
2007-08-24 10:43 | BoyLee      

#18楼  回复 引用 查看   

学习
2007-09-19 23:19 | 静水≈深流      

#19楼  回复 引用 查看   

受益匪浅啊。
向为广大程序员战友的技术提高而做出卓越贡献的无私战友致敬…………
2007-09-28 13:34 | Jacky_xu      

#20楼  回复 引用   

昨晚有幸读到了你的<戏说面向对象编程>(也许就是上面提到的小菜编程成长记),非常欣赏。说实在话,一个人只是单纯的会写点文字,发发自己的牢骚;或者单纯的懂技术,开发能力强,我个人认为,算不得什么。难的是,两者兼备。而你,做到了。能让外行一眼就爱上面向对象,爱上设计模式,并且一读就明白。何其难啊!这正是我一直努力的目标,因为我的职业就是软件开发老师。读过的晦涩、艰深、却百无一用的所谓教授专家所写的书,不敢说千,但至少过百吧。看看你的,禁不住由衷的感慨:深入浅出的真谛,莫过于此!

您的尝试非常有意义,希望您再接再厉,写出更多更好的文章,为我们国家的软件行业培养更多更实用的人才。
2007-10-28 11:05 | 肖雪平[未注册用户]

#21楼[楼主]  回复 引用 查看   

感谢各位的厚爱。不久,我的《大话设计模式》一书,即《小菜编程成长记》的完整版,将由清华大学出版社出版。希望能给爱好面向对象和设计模式的朋友帮助。
2007-10-28 15:29 | 伍迷      

#22楼  回复 引用   

感谢楼主,让我读到如此好文
2007-11-07 11:20 | Jong[未注册用户]

#23楼  回复 引用   

非常感谢楼主,您的《戏说面向对象编程》写的非常好,让我完全否定以前的代码(完全停留在过程化阶段)。很期待您的《大话设计模式》一书。
2007-11-16 13:21 | Sandwi[未注册用户]

#24楼  回复 引用 查看   

这么好啊?哈哈,我也看看,上班时间看,哈哈
2007-11-16 15:21 | Charming.Z      

#25楼  回复 引用 查看   

您的《戏说面向对象编程》写的非常好,让我完全否定以前的代码(完全停留在过程化阶段)。很期待您的《大话设计模式》一书。
2007-11-17 19:34 | aito      

#26楼  回复 引用   

有幸拜读,三生有幸!中国多些这样的技术文章,超美赶欧不远亦!
2007-12-03 13:51 | sunty[未注册用户]

#27楼  回复 引用   

真是大开眼界了,高手啊,
2007-12-06 17:47 | 彭吉洪[未注册用户]

#28楼  回复 引用   

写的真是太好了!
2007-12-07 11:35 | liyang5553989[未注册用户]

#29楼  回复 引用   

出版了吗?书店能买到吗?
2007-12-14 21:27 | gg[未注册用户]

#30楼  回复 引用   

帅,太帅了
2007-12-14 23:11 | 小侯[未注册用户]

#31楼  回复 引用   

已经买了这本书了,感觉看的很有意思,浅显易懂,对面向对象的认识真是质的飞跃。
2007-12-25 13:55 | gg[未注册用户]

#32楼  回复 引用 查看   

收藏电子版!
哈哈,只能当你不知道什么是设计模式的时候,才真正掌握它!
好比如说:打五笔成为一种本能的反映的境界

2007-12-31 18:06 | 个人知识管理      

#33楼  回复 引用 查看   

伍迷兄弟那本书超强悍的呀。
2008-01-05 14:56 | 杨正祎      

#34楼  回复 引用 查看   

一个字来形容这本书,简直是“妙“
2008-01-13 19:55 | HappyQQ      

#35楼  回复 引用 查看   

写的太好了,非常感谢!
2008-01-18 09:44 | 我们      

#36楼  回复 引用 查看   

支持你.别的什么都不说了!
2008-01-23 17:49 | 赵俊      

#37楼  回复 引用   

写的太好了!不过里面有一个地方有一个小错误,请改一下!!

public static Operation createOperate(string operate)

这个方法是个静态方法

Operation oper;
oper = OperationFactory.createOperate("+");

这里调用时用了动态方法!

#38楼[楼主]  回复 引用 查看   

@心的感觉和东东
好象这不是错误呀。:)你可以再仔细研究一下,简单工厂模式的核心就是这个地方。
2008-01-29 20:38 | 伍迷      

#39楼  回复 引用   

@伍迷
这本书写得真好,不过我在UML图这里有个地方没看懂。
按照设计模式里说的那句话(聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。)P14下面画的图中里的雁群和大雁,哪个是A,哪个是B?

有点看不明白,谢谢您。
2008-01-30 14:58 | 钢琴诗人[未注册用户]

#40楼[楼主]  回复 引用 查看   

@钢琴诗人
A是雁群,B是大雁
2008-01-30 15:35 | 伍迷      

#41楼  回复 引用   

学习!!!!
2008-02-02 16:53 | 小侯[未注册用户]

#42楼  回复 引用   

已经买到,看了一章,写的很好,继续学习中
2008-02-18 10:25 | tanjg[未注册用户]

#43楼  回复 引用   

@jailu
楼主啊,你能给我详细的介绍一下类的概念好吗?
2008-02-22 10:55 | 东方之珠[未注册用户]

#44楼  回复 引用   

我刚学面向对象,所以有很多不懂的地方,各位大哥大姐们帮帮我

2008-02-22 10:58 | 东方之珠[未注册用户]

#45楼[楼主]  回复 引用 查看   

@东方之珠
建议到书店找《大话设计模式》,并认真阅读附录一,或许可以对你有帮助。

如若还是不懂,建议找一本C#入门书籍阅读。
2008-02-22 11:41 | 伍迷      

#46楼  回复 引用 查看   

四大发明之活字印刷——面向对象思想的胜利

活字印刷的确符合面形对象的思想,到了电子排版的时代就可以采用设计模式中的享元(Flyweight)模式了,:)
2008-02-22 13:49 | Autumoon      

#47楼  回复 引用 查看   

买了一本,呵呵,不错,赞一个,第六页例子第5行

double result=0d;

这句是不是错误?
2008-03-07 13:57 | 数据绑定者      

#48楼[楼主]  回复 引用 查看   

@数据绑定者
这不是错误,这表明result变量是double型的,你可以去查阅C#相关语法.
2008-03-07 14:43 | 伍迷      

#49楼  回复 引用 查看   

对不起,呵呵
再次感谢你的书
2008-03-07 21:18 | 数据绑定者      

#50楼  回复 引用   

我很期待你的写作
2008-03-30 10:33 | hpf[未注册用户]

#51楼  回复 引用 查看   

很期待.
2008-04-21 13:14 | 侯垒      

#52楼  回复 引用   

赞  看了好几本设计模式的书  可是一本都没明白  
  小菜编程成长记系列  这个写得太经典了   打算先从这本书入门 
哈哈
2008-04-24 15:23 | FDS[未注册用户]

#53楼  回复 引用   

我先在您的博客看了几章,受益匪浅。为了学习更多,买了您出的书。谢谢您出了一本好书。
2008-05-03 15:24 | lqh777[未注册用户]

#54楼  回复 引用   

现在才发现这么好的书,相见恨晚啊,佩服楼主…… 学习……
2008-05-06 00:43 | ghost5018[未注册用户]

#55楼  回复 引用   

写的实在是太好了
明明当中学到了很多东西,有些东西不是别人教出来就能够记住的
要慢慢的吾才能达到效果。
哈哈
值得学习
2008-05-06 19:08 | feixue[未注册用户]

#56楼  回复 引用   

你实在是太帅啦,希望再接再励啊..我会支持你滴
2008-06-08 13:48 | C#菜鸟[未注册用户]

#57楼  回复 引用 查看   

写的简单易懂,感触颇深,期待更精彩的文章....
2008-06-10 12:04 | qiangchun      

#58楼  回复 引用 查看   

写的太好了,今天看了一下样章,马上在当当上订购了一本。
以前看设计模式,经常看着看着就睡着了。原因是一直搞不清楚为什么要用设计模式,在实际项目中怎么用设计模式。今天把你的小菜成长笔记看认真的看了一遍,感觉一下子入了设计模式的门了。
非常感谢!
2008-06-17 17:13 | 五味果      

#59楼  回复 引用   

怎么下载的源码里没有3-5、11章的呀
2008-06-19 14:56 | GUang[未注册用户]

#60楼[楼主]  回复 引用 查看   

@GUang
因为这三章里不需要源码呀.
2008-06-19 16:42 | 伍迷      

#61楼  回复 引用   

请教 单例模式假如用在实体类里,能保证跨程序集使用吗
具体就是实体类被非装在Model程序集(DLL)里,DAL、BLL应用Model后,调用Model的某个具体实体类,用单例模式有没有问题
2008-06-22 20:16 | ZZa[未注册用户]

#62楼[楼主]  回复 引用 查看   

@ZZa
还不是太清楚你的问题,不过根据我的了解,单例模式通常不要用在实体类中。
2008-06-22 21:09 | 伍迷      

#63楼  回复 引用   

感谢楼主的无私奉献!!!
2008-08-13 16:42 | Jo_Jo[未注册用户]

#64楼  回复 引用   

如果能把拍成电视剧就好了..........
2008-08-26 18:17 | xxxj[未注册用户]

#65楼  回复 引用   

看了你的书,感觉非常不错,语言诙谐幽默,内容简单易懂。非常好。
2008-09-01 20:32 | komac[未注册用户]

#66楼  回复 引用   

出了书还提供pdf下载 让人敬佩! 拜读中...
2008-09-22 20:44 | azziporah[未注册用户]

#67楼  回复 引用   

同意楼上的观点,等有钱了 一定不看电子版的
2008-09-25 10:15 | 梦涯[未注册用户]

#68楼  回复 引用   

买了一本,看了一半了,很不错!
2008-11-13 09:05 | afei2008[未注册用户]

#69楼  回复 引用 查看   

讲得很好。通俗易懂!

#70楼  回复 引用   

看了您的小菜編城長系列真是寫的通俗易懂,讓我覺得一定要拜讀您的著作。
花了時間把《大話設計模式》訂了,而今天書寄來了,但美中不足的是覺得書本比較大,拿著覺得不太舒服,希望以後能改善這個小缺點。
2008-12-09 20:37 | 烽[未注册用户]

#71楼  回复 引用 查看   

写的太好.楼主,真是个无私的好老师.谢谢了.希望多写一些好的东西.
2008-12-12 10:02 | 曾经苍海      

#72楼  回复 引用   

谢谢您的《大话设计模式》让我对一直觉得很有用但望而却步的设计模式有所了解!哈!功德一件呀!
2009-02-25 13:21 | 小盒子

#73楼  回复 引用   

谢谢您让我对一直望而却步的设计模式有所了解,功德一件呀!哈哈!
2009-02-25 13:23 | 小盒子

#74楼  回复 引用   

--引用--------------------------------------------------
心的感觉和东东: 写的太好了!不过里面有一个地方有一个小错误,请改一下!!
<br>
<br>public static Operation createOperate(string operate)
<br>
<br>这个方法是个静态方法
<br>
<br>Operation oper;
<br>oper = OperationFactory.createOperate(&quot;+&quot;);
<br>
<br>这里调用时用了动态方法!
--------------------------------------------------------
你自己错了,人家静态方法返回值是Operation 类型。。看清楚在评论
2009-03-22 18:49 | ym[未注册用户]

#75楼  回复 引用 查看   

我读了你的《大话设计模式》这本书以后想用里面的设计模式修改一下我前面写的一些代码,其中有一些查询方面的软件需求,我以前解决这方面需求时都是用拼字符串的方法做的,用了很多if语句,我觉得跟你讲的状态模式很像,不知道可不可以使用,还有就是怎么样用状态模式操作全局变量,然道是在每一个重载方面里面修改?小菜在这边先谢谢了。
2009-03-25 12:07 | 赵俊      

#76楼  回复 引用   

菜鸟又次复习和清晰了三层结构,很不错的文章。我们软件业需要这种知道技术又知道怎么让人家也知道的人。谢谢!

#77楼  回复 引用   

书写得实在是太好了。
不过我在敲源代码的时候出现了点问题:由于我是一步步按照书上的代码写的,开始建立的是控制台应用程序(vs2005),经过小菜的不断修改之后形成了最后的简单工厂模式,我又加了一个windows窗体,用三个textbox,一个combobox和一个button组成了一个简单的计算器(在主函数里用的是showdialog()),编译没错,运行后点击button报错,而且很莫名奇妙,老是提示“输入字符串的格式不正确。”
我重新建立了一个windows应用程序,把代码原封不动复制过去,运行非常成功。这是为什么?
我QQ是562695491,能加我不?
2009-04-13 21:22 | skran[未注册用户]

#78楼  回复 引用   

楼主实在是厉害,写的非常清楚明白,拜读之下,让人感觉获益良多,非常感谢楼主!
2009-05-01 16:54 | karios[未注册用户]

#79楼  回复 引用   

NND 我家里几十本书我就是买了,看了一半就不看了,实在看不下去丢在一边...

这本我反反复复看了N次,并把其中例子代码写成了Delphi版
2009-05-18 10:41 | xingyun[未注册用户]

#80楼  回复 引用   

看这种书很轻松
2009-07-27 16:29 | 野风111[未注册用户]

#81楼  回复 引用 查看   

下载了 谢谢楼主
2009-07-31 12:15 | 初级程序员      

#82楼  回复 引用 查看   

看了你的书,有个问题想请教一下。
1、单例模式里如果要继承那窗体该怎做,他的构造函数已经是私有的,不太明白,所以请教一下!~
2、多线程单例那里,如果在同一台电脑上利用远程桌面或终端,两用户同时运行这程序,算不算是多线程?
2009-08-23 01:35 | fsone      

#83楼[楼主]  回复 引用 查看   

@fsone
1)建议不要单例继承。如果真需要,让子类实现单例,而不是父类实现了单例后再继承。
2)不是多线程。
2009-08-26 15:08 | 伍迷      

#84楼  回复 引用 查看   

一口气看完了,夜里1点了,还是恋恋不舍。
2009-09-14 00:58 | eneboy      

#85楼  回复 引用   

昨天买了你的书,很好。
2009-10-15 16:02 | clxye[未注册用户]

#86楼  回复 引用 查看   

看完了,很大很大的收获,我还查了小菜现在怎么样了。楼主不写了么?
2009-11-18 17:41 | Seasun海豚      

#87楼  回复 引用 查看   

哈哈,看了一下,好看又好玩,比起枯燥的电子文档有味多了
2010-05-27 18:01 | 雨山      

#88楼  回复 引用   

写的很有趣,这样其实效率反而更高了,现在看到教材就太正经了
2010-06-15 23:41 | death knight[未注册用户]

#89楼  回复 引用 查看   

唉,现在才看到,好后悔啊!
2010-07-01 08:58 | 难再续      

#90楼  回复 引用   

您好,最近阅读了您的《大话设计模式》一书,感觉收获不小,非常感谢。不过有一点我一直不太理解。一般的设计模式书籍貌似都趋向于分类,然后每一类中逐个解释。那么这本书是如何组织设计模式的组织顺序的?
2010-07-05 11:12 | ljc[未注册用户]

#91楼[楼主]  回复 引用 查看   

@ljc
您如果理解散文的“形散神不散”可能就容易理解我这本书的组织结构了。

其实应该说,我的组织结构基本是按照从比较常用到不太常用的顺序来写的,不过当中也有个别差异,对读者来说,顺序是什么不重要,关键是要对每个模式后面所体现的原则是什么要很重视。我最后的29章对这些模式做了总结,希望可以对你有帮助。
2010-07-05 14:17 | 伍迷      

#92楼  回复 引用   

@伍迷
感谢!
2010-07-05 21:45 | ljc[未注册用户]

#93楼  回复 引用 查看   

很不容易,我看到面向就晕,现在有所理解了,原来这样有意思,感谢了,看你那文章就知道在用心在写。
2010-12-09 21:58 | tomato.net      

#94楼  回复 引用   

非常的好!对面向对象和设计模式的初步理解。通俗易懂。推荐给刚毕业的学生看了,还有一个去年毕业的。
2011-01-11 17:38 | wzp[未注册用户]

#95楼  回复 引用 查看   

感谢作者的分享,!
2011-01-25 19:29 | f117c      

#96楼  回复 引用 查看   

大牛加油,春节回去我好好研读下,刚开始接触编程呢!
2011-01-25 19:41 | f117c      

#97楼  回复 引用 查看   

博主是个为中国程序员做贡献的革命先驱,无私的精神值得我们学习!
2011-03-02 10:26 | Alex_QY      

#98楼  回复 引用   

程哥,你太帅了
2011-06-14 22:18 | _acis[未注册用户]

#99楼  回复 引用 查看   

@伍迷
楼主,感谢您的无私奉献
我是一个刚刚学习编程的小菜,有一处地方我看不不明白
文中原型模式里面说的
public override Prototype Clone()
{
//创建当前对象的浅表副本.方法是创建一个新对象,
//然后将当前对象的非静态字段复制到该新对象.
//如果字段是值类型的,则对该字段执行逐位复制.
//如果字段是引用类型的,则复制引用但不复制引用的对象.
//因此,原始对象及其副本引用同一个对象
return (Prototype)this.MemberwiseClone();
}
然后客户端里面实现的
static void Main(string[] args)
{
ConcreatePrototype1 P1 = new ConcreatePrototype1("K");
ConcreatePrototype1 C1 = (ConcreatePrototype1)P1.Clone();
P1 = new ConcreatePrototype1("KK");


Console.WriteLine("Clone :{0} P1{1}",C1.Id,P1.Id);

Console.Read();
}
按照文中说的,原始对象及其副本引用同一个对象,但是为什么得出的结果是 Clone :K,P1KK呢?不懂~小菜请见谅!
2012-01-05 15:32 | Jet_kk      
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 697431 JbIqbRK8liE=

导航

公告

    《大话数据结构》第三次印刷已将勘误中的错误修正,预计在2011年12月在各大网上书店中有售。具体时间由网店决定,我也不清楚,如果有买到的朋友能否给我发封邮件呀。再次向已经购买第一二次印刷的读者说一声抱歉,给您要花时间修正错误添麻烦了,当然您们在花费二十多分钟的修改后就能尽早阅读本书,也算是有遗憾后值得欣慰的地方!


联系邮箱:chengjielong#163.com
(中间“#”换成“@”)


新浪微博:http://weibo.com/cj723


本人《大话数据结构》2011年6月简体中文版由清华大学出版社出版,繁体中文版由台湾悦知文化出版



简体中文版


繁体中文版


本人因《大话设计模式》而获得51CTO网站主办的"2008年十大IT图书最佳原创作者奖" ;《大话设计模式》获互动出版网评选的2008年度十大畅销经典第4名;当当网计算机/网络类2008年度畅销榜第6名



简体中文版


繁体中文版
昵称:伍迷
园龄:5年5个月
荣誉:推荐博客
粉丝:668
关注:18

搜索

 

常用链接

随笔分类(165)

随笔档案(138)

相册

朋友

积分与排名

  • 积分 - 535943
  • 排名 - 107

最新评论

阅读排行榜

推荐排行榜