也谈设计模式

最近可以用三个字来形容“忙”“乱”“烦”,其实我估计很多人也都这状态,如同家家有本难念的经,人人都有没法说的烦恼。

在这状态下,已经很久没有写一些跟技术相关的东西了,前两天想升级BSD的系统到最新的6.3版,结果cvsup了一个多小时源码树没有完,就心烦气躁的Ctrl+C放弃了,最近因为诸多项目启动,连续一周多写系统分析文档,一个项目一整就是三十来页的分析文档,其实还是很草的那种,实在也没有精力和心思给写得彻彻底底的,估计真完全弄踏实了,少说也得上百页才能算合格的系统分析文档。

写这两份文档的中间儿,想到了我的兄弟们在拿着文档开发过程中可能会面临的一些问题,其中最担心的就是在面向对象开发的时候面临的对象间关系处理问题,专业术语讲,那就是设计模式的问题。

这东西也老生常谈了,说实话,如同大学里面学的那几门计算机基础知识一般,设计模式实在很重要,貌似很基础的东西,一讲大部分都能明白,但是真正用起来和项目结合,还是一头雾水,这就跟咱们大学学数据结构一样,回想起来,有几个在后来工作中用过那些最基本的二叉树、链表、图一类的东西? 原来3721的老哥李钊说得很经典,中国为啥计算机科学落后,缺少的不是高级程序员,缺少的是对计算机基础知识理论理解透彻的人。很多武侠小说里面的高手,到最高境界不是会多少套路和拳法,而是用最简单的招式化解一切高深的套路。

相比之下,设计模式对于面向对象开发来说,有点儿类似的味道,会写类、继承、重载、抽象一类的东西不难,但是把这些东西用更简单的思路来看待和组织就有难度了,设计模式不是把他们复杂化,而是为了让问题更简单。把简单的东西发挥到极致比把复杂的东西学会往往更有价值。

说到这里,估计也看出我这还是没有在讲技术,是啊,一真进入技术话题,设计模式不是这么简单三言两语能说明白的,常见的23种模式,经典的21种,随便一种都得且说呢,记得看过一个哥们的blog上用星际争霸的实现思路来讲述了大部分的设计模式基础,感觉真不错,大家可以google一下。

今天写这些,主要是因为最近的几个项目系统分析文档中涉及到不少地方需要运用设计模式,于是乎准备在最近给我的兄弟们找个时间讲堂课,说说常见的设计模式的应用,最近正准备动手弄个PPT,所以就先酝酿酝酿思路和情绪。

真正有兴趣、有决心、有信心、有恒心深入一下的朋友,去看看这本书吧:《设计模式》,经典至极,该书作者均是国际公认的面向对象软件领域的专家,号称“四人帮”。

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
17 Responses
  1. 代码罐头 says:

    其实设计模式并不是十分高深的东西
    相反.它是对于常用的设计手段的抽象.
    让程序员在沟通的时候.
    可以用一个词汇来替代洋洋洒洒说上几百字.
    大家讨论起来可以如”你觉得这里用工厂模式好不好?”
    而不是每次一说话就要把整个设计思路都先谈一边.
    国人写的一本也不错
    四人帮写的设计模式很经典
    不过越经典的东西
    就越不容易一下子看懂
    想让下面的人能立马就用设计模式来提高效率
    还是不要一上来就那这本枕头书来吓他们比较好.
    😀

  2. guest says:

    很不错的主管
    还能给下面的兄弟分享一下自己的经验

  3. Michael says:

    [Comment ID #25167 Will Be Quoted Here]

    那本书我是建议有信心、恒心和决心的人去读, 对我的兄弟来说,我必然是讲些具体的实际的案例分析,怎么说我要的是工作的结果的基础上,再去争取让他们都能有更多的个人提高。

  4. Michael says:

    [Comment ID #25170 Will Be Quoted Here]

    :) 见笑了,不过作为领导,让兄弟们都能收获提高了,才能让自己更省心。

  5. 代码罐头 says:

    有些东西还是要他们实际用到了才会对他们有帮助
    以前也一直对兄弟们讲课
    也为了大家提高.每周轮换着让每个人想一个话题准备好了给大家上课.
    结果也不是特别理想.
    当然这种课程.往往就是越积极的人,学到的越多
    还有个问题就是.往往是学的两周内还记得
    再多过一阵就完全烟消云散了.
    不过如果某个团队都是做同样工作.可能会比较好.
    我的向来包含人员比较杂.系统的.DBA的.网络的.HELPDESK的
    可能也因此效果会差很多.

  6. Michael says:

    [Comment ID #25177 Will Be Quoted Here]

    因地施宜,没有万能的东西。看来今后还得多跟兄弟你多请教学习才行。

  7. 代码罐头 says:

    兄弟玩笑了
    我所辖不过30平.手下不过6,7人.
    只是个普通的技术主管.
    每次也都是百把人的企业就职.

  8. guest says:

    呵呵,
    原来两位都是主管,
    个人认为由主管来讲的一些东西还是应该认真学习的,
    毕竟是多年的经验积累,
    可能一节比较好的讲解能让你一个人自学上好久都不得其解,
    对于上进的人来说这是很难得的机会,就看自己如何把握了,

  9. 代码罐头 says:

    大胡子老男人不是主管哦
    是CTO来的…(拜一下…)
    博客的精华.一大部分在于对于商务的分析和看法.
    (这就是主管和CTO的差距)
    特别是IT企业的遇到的瓶颈的这篇.
    就是关注这部分的人比较少而已.

  10. guest says:

    呵呵
    目前俺只关注技术
    看来以后也要多关注一下商务了
    不过俺大学学的是那方面的专业
    毕业后转行做技术了o(∩_∩)o…

  11. Michael says:

    哈哈,两位兄弟让我这里一下子有蓬荜生辉的感觉,欢迎常来交流,多多指点啊。

  12. 南半球 says:

    re: “以前也一直对兄弟们讲课,也为了大家提高.每周轮换着让每个人想一个话题准备好了给大家上课.结果也不是特别理想.”

    个人感觉这样挺好,为什么效果不太理想呢? 是不是应该针对工作中使用率高的技术 做技术培训和交流更好, 然后对于理论性强 或者 是扩展类的技术知识 作为补充来training

  13. 南半球 says:

    对于初学设计模式的,感觉可以挑几个 易懂的、用的也比较多的先理解。 比如 单态模式、工厂模式, 开闭原则、高内聚低耦合之类容易接受一点的

  14. 代码罐头 says:

    >>个人感觉这样挺好,为什么效果不太理想呢?

    反思过.
    1.可能是因为团队的成员组成工作的内容差距较大.比如这周如果是网络工程师讲课,虽然基础内容大家都知道,但是讲到他所遇到的一些细节问题,比如NAT的效率问题之类的,其他比如系统工程师就兴趣寥寥了.
    2.并不是所有人都愿意去花很大的精力准备讲稿,其实我们都知道,讲课,获得最多的其实是讲师自己,虽然感觉自己已经了解.但是真正的整理成有条理以及细化内容之后,会发现自己学会了很多以前不胜了了的内容.虽然效果很大,但是反过来压力也很大,并不是每个成员都能理解到这种方式的好处的.一旦有一个成员准备的比较随意,可能会将坏的影响迅速扩散.
    3.容易被打乱,我们知道很多长期性的内容就需要坚持,而一旦被打乱之后,就很可能由于人类的惰性而停滞,最后取消,除非下雨都坚持锻炼,否则三天连着下雨之后,哪怕是坚持了几个月的锻炼都可能在随后而停止,就是这个道理了,而这种课程,很有可能由于工作压力,日程安排,会议室条件等等的改变而受影响.由于本人不是一个非常持久的人(不要想歪).所以这个主持人本身的弱点也会导致项目的失败.

  15. 南半球 says:

    >>这个主持人本身的弱点也会导致项目的失败.
    谦虚了,你总结的这么细致,以后肯定会越做越好

    我以前呆过的一个公司的那个部门 就很类似你的做法,经理经常组织大家培训学习。只是我们学习的针对性比较强。
    后来很多人由于公司原因都离开了,一个当年刚毕业的学生,前段时间跟我说 很怀念在那边的学习气氛

  16. 代码罐头 says:

    这种小的研讨.也可以不局限在讲课.
    如果当天的主讲没有新内容可以讲
    也可以找他深思熟虑但是悬而未决的问题
    详细的讲述出来
    大家一起头脑风暴
    也是非常有效的学习方法.
    大胡子.我们鸠占鹊巢.你的博客变论坛咯.呵呵

  17. laen says:

    http://www.24hmb.com/index2009.shtml
    刚做完的小样,请各位高手指点,全站一个人做的,后台ASP的,哈哈。

Leave a Reply

Your email address will not be published. Required fields are marked *

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Anti-spam image