程序员关于设计模式学习心得

程序员关于设计模式学习心得

程序员关于设计模式学习心得

设计模式,每一个稍有经验的程序员应该都比较熟悉的一个词汇。我第一次听到这个词,记得是参加工作第一年时听一个前辈说起的,当时他还推荐了一本书,大话设计模式。当时对这个概念并不是很重视。典型的新手思维,心里想,无非是综合运用抽象、继承、多态等特性,把这些特性玩溜了,设计模式手到擒来。现在想来,自己真是天真,无知。掌握了面向对象的抽象、继承、多态等特性并不意味着就能掌握设计模式,写出结构优良,易于扩展、维护的代码。面向对象技术仅仅是设计模式的实现技术基础。而设计模式是一套面向对象编程的经验,是许多软件行业的前辈长时间的艰苦努力总结出来的,是值得我们好好研究,好好学习,值得在工程实践中探索应用的。

使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。二十几种设计模式中,常用的有十几种,学习理解这些模式也许不是特别困难的事情,但是难点在于如何学以致用,在实际的工作中如何使用这些模式,或者说如何使用设计模式令我们的工作受益。以下从设计模式使用误区和如何有效在工作中使用设计模式两方面谈一谈自己的一些想法。

为了使用设计模式而是用设计模式,是最得不偿失的一种观念。类似的描述是过度设计,对代码进行了过多的面向未来的设计,进行了不必要的抽象封装,为系统增加了不必要的复杂度。这是不值当的。当然,更多的情况是没有运用设计模式进行恰当的封装,使得产品功能的迭代进行的非常困难,甚至需要重构代码才能继续进行下去。

关于如何在工作中更有效的使用设计模式,下面谈一下自己的一点想法。首先要从使用设计模式的目的说起:代码可重用。如果代码可重用性比较良好,那么需求有新的变化或者增加,我们只需更改少许的代码便可实现新的需求,开发测试工作量都会相应的减少,这是设计模式带来的好处。那么如何做到代码可重用呢?个人认为,首先要从产品需求分析做起。与产品确定产品现有功能点,以及将来的产品规划,确定变化与稳定点,这是进行设计模式设计的基础。另外开发人员要深入领会掌握设计模式技巧,做到“心中有剑”。最后,对于经验尚浅到的程序员,不要想着一蹴而就,有时候设计模式是迭代的结果。

最后结合近期水电布线功能,反思一下如何能够更好地实现该模块。对于点对点布线算法子模块,由于强电,给水,算法存在一些差异(当然在该模块开发之前,并没有对此进行深入的调研),但是目前来看差异并未达到完全没有关联的地步,或许可以采用装饰模式:强电走线算法作为基础Component,给水在强电外包一层给水独有的算法,然后再调用强电走线算法(目前使用的是静态方法,大体也是在强电外包了一层给水走线算法),由于排水,弱电走线规则还不确定,所以该方案是否可行,还需要调研。当然也可以使用策略模式,将几种走线算法彻底区分开来,但代码或许存在冗余。对于界面交互,目前来看,各个布线模式,数据初始化,连线规则,交互提示都是变化的地方,可以用策略模式加以解决,这样就可以不用经常修改Operation类了。