转自:http://www.wangyonghu.com/post-6.html
- 你是否适合学习设计模式?
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
因此设计模式是为软件具体编码的人员服务的,涉及到的相关人员有基层软件开发人员,基层的技术经理等。掌握了设计模式,可以让你开发的系统更满足O2O的概念,部分的实现代码的可扩展性。所以这个和架构师、需求分析师、甚至和项目经理都没有太大的关系,当然有这个技能最好。设计模式主要解决的是具体代码逻辑的实现问题,他把平常开发中出现的例如:重复建对象、继承扩展性、回调方法等思想进行了抽象总结,以利于你快速的解决生产上上述模式的问题。
是不是你掌握了设计模式就能开发出高质量、高扩展的项目了?完全不是。好的项目又涉及到业务梳理、模块拆分、逻辑开发等等。而设计模式只不过是你实现那个逻辑的一种代码思想。如果开发的质量不高,存在大量bug,或者项目业务和模块分的不好,例如权限、组织引用混乱,那么你用设计模式生成的对象再漂亮,可能也会是一个失败的项目。
现在很多软件开发工程师是没有使用设计模式的意识,其实也是情有可原的。很多java开发者都是web开发人员,基本都是mvc的结构,只要补充基本的逻辑,整个开发流程就完成了,这样也是出色的完成了工作。这里提一下,mvc不是设计模式,他是一个软件开发的框架思想。设计模式只是针对微小的代码模块抽象的思想。70年代提设计模式的时候,那时候这么庞大的项目开发估计还很少。目前偏java后端开发的人员可能会更多的关注一下设计模式,因为单进程的java project还是要自己好好的构建的,当然对此spring也提供了很好的框架的扩展性。
- 设计模式有哪些?
设计模式(Design pattern)主要对代码开发中的三种问题进行了总结抽象,分别是:
1)创建对象:抽象出了5种创建型模式。利于对象的扩展、继承、或者生成单一对象等;
2)对象间关系:或者说是对象的扩展方式、关联方式等,总结了7种结构性设计模式。采用结构模式可以对不同对象进行无缝连接、或者有利于程序扩展,亦或该结构能有效提升程序性能等。
3)代码逻辑的实现,总结了11种行为型设计模式。该类型模式有些已经被api、或者基本class类型固化了,例如Iterater,使用该类型,可以很好的进行代码逻辑的实现。
上面这些思想可能还是比较虚的,看了有些摸不着头脑,不懂他的内涵,我们后面一种一种的进行学习。如果我们进行开发程序时,如何选择使用设计模式呢?如果是小程序,我倒是不愿意过分的往设计模式靠拢,存在过度设计的嫌疑。毕竟技术是为生产服务的,不需要继承扩展能实现的,就不要用高射炮打蚊子了。如果系统庞大,或者出现了需要解决的设计模式问题。初级开发者还是要统揽23种方法,察觉哪种可以帮你解决问题。当你达到熟手时,这个问题就不是问题了,相信你可以信手拈来。