对设计模式的理解
学习java设计模式有段时间了,一直在阅读学习《深入浅出设计模式》,本文就简单说下本人对于设计模式的浅显理解。
我理解的设计模式是一些框架,经过前辈们的实践与时间的考验沉淀下来的一种代码设计框架。在项目开始之前,良好的软件架构与代码设计对后面的项目实现开发效率的促进,维护成本的提高都有很大的益处。一个未经考虑的代码设计在后期的维护过程中会增加大量的成本,工程师需要大量的时间去理解源码的结构,修补因为解耦性差导致复杂度超高的bug。在前辈们的努力下,无数经过时间检验的优秀软件架构产生了,而且很多代码的设计是类似的甚至是一样的。这些优秀的架构经过进一步的抽象,提炼出的设计模式很容易被后辈们学习进步,如此推动代码设计的发展。
所以说设计模式并不只是书中那二十三种,优秀的设计模式每天都在沉淀,只要是能给解决问题提供好的方式(非具体方法)就是好的设计。设计模式同时也是一种思想,稳定、有效、易于维护是它的宗旨,虽然设计模式是对重复出现的要解决的问题的一种解决方案,但是能放之四海而皆准的设计是没有的,不同的情景适用不同的设计,而很多时候我们也可以自己在前辈们的设计模式基础上就行修改扩展以适用于我们自己要解决的问题。
说了这么多虚的,下面简单总结下现在大家用的较多的又比较容易理解的设计模式类型。
1、创建型设计模式
这种模式顾名思义,是把创建对象、实例化这一过程抽象成一个框架,它们做的事就是帮助开发者理解、管理各种相似的事物、问题。它把创建对象的过程整合成一种规范,通常不会直接让开发者使用基础的代码创建凌乱的对象,而是在创建的过程中通过表意的代码创建对象。这些设计模式大多能够表现出一个对象在什么时候创建,谁创建,怎么创建等信息,最大程度帮助开发者理解代码意图,增加协作的便利性。这类设计模式一般是能让你的代码解耦性更强,更安全(把创建对象的操作封装了起来),维护难度降低。
比如说工厂模式、单例模式、建造模式、原型模式等。
2、结构型设计模式
这一模式的侧重点在于如何组合不同的类型和对象以获取到更大或者更灵活的结构,去适应不同的使用场景。这一类模式采用继承机制来进行类型的组合或组合不同的接口,同时实现以更少的代码量来实现更多的功能,并把功能实现封装。这类设计模式极大的扩展了对象组合的方式,更加接近现实中我们所了解的世界类型的样子。如常见的桥梁模式、组合模式、享元模式。
3、行为型设计模式
这一类模式由于模式本身便一定程度得反应了设计者想完成的任务,所以称得上是行为导向的设计模式。再则设计者面临的任务环境多样,任务种类多样,所以这一类设计模式占了绝大多数,其实我们自己在设计代码架构时,也可以根据自己的任务需求,设计一种设计模式,方便理解,提高效率。而这一类设计模式的好处就在于,行为导向的设计模式一定程度上就是代码框架,很大程度上方便程序猿合理地进行代码的编写。
行为型设计模式光从名字上就能简单地分析其结构,如:命令模式、迭代器模式、访问者模式、代理模式。