标准的设计模式总共有23种,这些模式能够分为三大类,建立型、结构型和行为型
,除了这23种外,还有其余如J2EE的设计模式(MVC等),这里只学习23中的常见的几种,结合Head First 设计模式
和Java的一些框架源码进行深刻学习,并经过ProcessOn画出UML图。html
工厂模式
单例模式
适配器模式
外观模式
装饰器模式
代理模式
观察者模式
命令模式
状态模式
迭代器模式
模板模式
策略模式
六大原则:编程
开闭原则
:对扩展开放,对修改关闭。里氏替换原则
:任何基类能够出现的地方,子类必定能够出现。此原则保证子类能够替换基类而不影响原有功能,同时能够在基类的基础上增添行为。依赖倒转原则
:针对接口编程,依赖于抽象而不依赖于具体。接口隔离原则
:相对于单一的接口,使用多个隔离的接口会更好,强调下降依赖、下降耦合。迪米特法则(最少知道原则)
:一个实体应尽可能少的与其余实体模块发生相互做用,使得系统功能模块相互独立。单一原则
:一个类只负责一项职责,防止一个类负责多项职责,当其中有项须要修改的时候,影响到其余职责的运行。单一职责原则告诉咱们实现类要职责单一;里氏替换原则告诉咱们不要破坏继承体系;依赖倒置原则告诉咱们要面向接口编程;接口隔离原则告诉咱们在设计接口的时候要精简单一;迪米特法则告诉咱们要下降耦合。而开闭原则是总纲,他告诉咱们要对扩展开放,对修改关闭。设计模式
Head First的大白话设计原则:架构
对六原则的遵照不是是和否的问题,而是多和少的问题,也就是说,咱们不会说有没有遵照,而是遵照程度的多少。任何事情都是过犹不及,设计模式的六原则也同样,制定六原则不是为了让咱们刻板的遵照他们,而须要根据实际状况去灵活运用
。对他们的遵照程度只要在合理范围内,就算良好的设计了,如下用图来描述下:框架
图中的每一条维度各表明一项原则,咱们依据对这项原则的遵照程度在维度上画一个点,则若是对这项原则遵照的合理的话,这个点应该落在红色的同心圆内部;若是遵照的差,点将会在小圆内部;若是过分遵照,点将会落在大圆外部。一个良好的设计体如今图中,应该是六个顶点都在同心圆中的六边形
。学习
在上图中,设计一、设计2属于良好的设计,他们对六项原则的遵照程度都在合理的范围内;设计三、设计4设计虽然有些不足,但也基本能够接受;设计5则严重不足,对各项原则都没有很好的遵照;而设计6则遵照过渡了,设计5和设计6都是迫切须要重构的设计。设计
设计模式是很重要的一门技术,若是要提高本身的竞争力,往架构师方向走的话设计模式是必不可少的。目前的Java体系中大量运用了设计模式,如IO的装饰器模式、Spring IOC的工厂模式,单例模式、Spring MVC的适配器模式、Spring AOP的代理模式,适配器模式等等,学习设计模式能够帮助本身理解源码,相对的,学习设计模式时能够结合现有的Java体系中的设计模式,阅读其源码,结合实际应用学习,能够达到很好的学习效果。代理
参考:code