工作了这几年,技术积累了也不少了,但是平时也没怎么将所读的记下来,一方面觉得存在脑海里就好了,一方面算是工作问题,可能也是自己偷懒,不过这段时间想想,还是应该把自己这几年的技术沉淀给转换为文字,一方面锻炼一下自己的文字表述能力,一方面看看自己能不能把自己学的以通俗易懂的方式教授给别人,毕竟真正掌握一门技能最好的方式就是教给别人,话不多说,就先从大家都熟悉透的设计模式入手吧,设计模式虽然已经烂大街了,博客园上也一搜一大把,但是希望自己能讲解出不同的风采,尽量以不同的角度来切入设计模式这个领域,话不多说,先来说一下为什么我们需要设计模式。
设计模式原本是建筑学领域的内容,因为建筑师在建造房子时,发现建造房子很多时候都大同小异,然后抽象出了一系列的模式,当然,不是说他们提供的模式是最好的,但是套用这种模式却是最不容易犯错的,而这套模式也被搬到了软件工程的设计上面上来,最早起源于《GOF23设计模式》的博士毕业论文,里面阐述了在软件工程中,所遇到的一系列问题,和常见得软件工程的设计场景,他们将这些场景抽象出来,整理成了23种设计模式,当然,设计模式肯定不止这23种,像还有熔断设计模式、MVC设计模式、只是这23种设计模式较为外人所熟知,我随手画了张思维导图,
大致将设计模式分为了3大类
1、创建型设计模式 2、结构型设计模式 3、行为型设计模式
当然还有指导设计模式的设计原则
1、单一责任原则 2、开闭原则 3、里氏替换原则 4、依赖倒置原则 5、接口隔离原则 6、最少知识原则
首先来说一下3大类的设计模式,对于创建型设计模式,顾名思义是产生对象的设计模式,这类设计模式主要通过一定的方法产生指定的对象,像抽象工厂、单例、Builder、Prototype,都是为了创建指定对象的模式,具体怎么创建,后期再表,剧透一下,下一章将讲到各种市面上各种单例模式,以及缓存类型的单例,可控制的多实例的“单例”。
对于结构类型的设计模式,主要是该类型的模式,主要是为类提供某种特定的结构或封装,像适配器模式、桥接模式、装饰器模式,组合模式等,都是为了提供特定的某种结构所存在的,这里我想了挺久的,代理模式其实也可以划分到行为模式上去。
而最后的行为模式主要是该种类的类,都有特定的动作,行为,像我们最常用的命令模式、责任链模式、状态模式、调停者模式,单单从这些模式的名字我们就可以看出,这些类都具有特定的某一些行为
虽然这样的分类有些粗糙,但是我们可以管中窥豹,大致可以看出他们最初的一些设计初衷以及大致在我们工程上遇到的时候,选型上、设计模式的取舍上可以更好的把握。