读《design pattern》有感

                 我不知道大家为什么对于“码农”这个称呼那么在意,认为他不光彩,是因为“码农”是一个劳动强度大,获利少的职业?还是因为他和农民有那么一丁点的关系?任何职业都有其存在的艺术性!或者说美感!!农民又怎么了?农民就不懂艺术吗?农民一样高贵!我们仅仅需要的是一双能发现美的眼睛和一双能创造美的双手!

                                   2011022115052854.jpg

                                                                            (龙胜龙脊梯田)

                                   2011022115061087.jpg

                                                      (还记得吗?12年前,这里正是指环王电影的场景)

            最近看了《design pattern》这本书,还没有看完,到我已经被他深深的吸引了。这本书是一本与码农息息相关的书。我们明白,设计一个面向对象的软件不容易,而设计一个可重用的软件更不容易。这本书作者的目的是将一些设计软件上的经验总结成一些pattern,当碰到类似的问题时可以使用这些前人总结好的pattern来进行设计,可以达到重用的效果。

            那么,什么是design pattern?一个建筑师曾说过:“Each pattern describes a problem which occurs over and over again in our environment , and then describes the core of the solution to that problem , in such a way that you can use this solution a million times over, without ever doing it the same way twice”虽然他说的是建筑,但又何尝不是软件?这本书就是讲pattern中类与对象的组合,交流关系,并且如何通过这些pattern解决常见问题。当然了,我们的重点并不是如何解决问题,我们的目的是想通过设计良好的格式,达到可重用,并且高效的效果。

           说到重用,这确实是我们需要时刻注意的东西!看过《变形金刚》的童鞋应该可以深切体会重用的重要性吧!书中在介绍各种pattern之前给我们介绍了四种重用的技巧。分别是继承,组合,代表,带参数的类。继承,和组合相信大家都比较熟悉,如果熟悉c#的童鞋对代表(delegate)应该也不会陌生,带参数的类,指的是如List<>之类等类似 c++ 中template。

           这四种技巧各有优缺点点,继承虽然简单,却有破坏封装性的嫌疑。当父类需要改变时必须得考虑是否会对其子类有影响,并且其是在编译时确定的,不能再运行时改变。组合是一个比较好的形式,但会造成对象过多,影响效率。代表极大的增强了程序伸缩性,但是不可避免的,他有点破坏了程序的可读性。

                书中给出了两个准则(为了不破坏原意,所以使用英文):

                         1. Program to an interface , not an implementation

                         2. Favor object composition over class inheritances

               这些都很基础,但是很重要!书的后半部分介绍了各种pattern,见下图:

2011022115084487.jpg

              我就不一一介绍了,相信大家对于Factory,Iterator应该不陌生吧,如果弄过编译器的童鞋,看到Visitor应该也很有感觉吧~,如果玩过java.awt.event库,对于Adapter应该也见怪不怪了吧。呵呵,这些东西我认为就是一种美的存在,虽然现在的程序向面向对象的思维开始转化,强调对象之间的关系与交流,这是一种思维上的进化,但是结构化也有其好的一面,他的工整,清晰是我们需要学习的!

 

MicroTeam Liuhang

转载于:https://www.cnblogs.com/MicroTeam/archive/2011/02/21/1959769.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值