设计模式(1、类型及原则)

1、设计模式有哪些

标准的设计模式总共有23种,这些模式能够分为三大类,建立型、结构型和行为型,除了这23种外,还有其余如J2EE的设计模式(MVC等),这里只学习23中的常见的几种,结合Head First 设计模式和Java的一些框架源码进行深刻学习,并经过ProcessOn画出UML图。html

  • 建立型:建立型主要提供了一种在建立对象时隐藏建立逻辑的方式,好比一般咱们是经过new显式的建立对象,而建立型模式只提供了建立对象的方法,隐藏了建立对象的过程,可以更灵活的对对象的建立过程进行灵活扩展。主要有如下:
    • 工厂模式
    • 单例模式
    • 抽象工厂模式
    • 原型模式
    • 建造者模式
  • 结构型:结构型设计模式主要侧重于类和对象的组合,传统的继承可能会致使大量的类,让项目十分臃肿复杂和难以扩展,结构型的设计模式对对象进行抽象,并采用组合的方式,大大较少了类的数量,同时更灵活的扩展。
    • 适配器模式
    • 外观模式
    • 装饰器模式
    • 代理模式
    • 桥接模式
    • 过滤器模式
    • 组合模式
    • 享元模式
  • 行为型模式:行为型模式主要侧重于对象间的通讯
    • 观察者模式
    • 命令模式
    • 状态模式
    • 迭代器模式
    • 模板模式
    • 策略模式
    • 责任链模式
    • 解释器模式
    • 中介者模式
    • 备忘录模式
    • 空对象模式
    • 访问者模式


2、设计模式原则

六大原则编程

  • 开闭原则:对扩展开放,对修改关闭。
  • 里氏替换原则:任何基类能够出现的地方,子类必定能够出现。此原则保证子类能够替换基类而不影响原有功能,同时能够在基类的基础上增添行为。
  • 依赖倒转原则:针对接口编程,依赖于抽象而不依赖于具体。
  • 接口隔离原则:相对于单一的接口,使用多个隔离的接口会更好,强调下降依赖、下降耦合。
  • 迪米特法则(最少知道原则):一个实体应尽可能少的与其余实体模块发生相互做用,使得系统功能模块相互独立。
  • 单一原则:一个类只负责一项职责,防止一个类负责多项职责,当其中有项须要修改的时候,影响到其余职责的运行。

单一职责原则告诉咱们实现类要职责单一;里氏替换原则告诉咱们不要破坏继承体系;依赖倒置原则告诉咱们要面向接口编程;接口隔离原则告诉咱们在设计接口的时候要精简单一;迪米特法则告诉咱们要下降耦合。而开闭原则是总纲,他告诉咱们要对扩展开放,对修改关闭。设计模式


Head First的大白话设计原则架构

  • 找出程序中会变化的方面,而后将其与固定不变的方面相分离(隔离会变化的模块,并经过其余原则设计出弹性的、可灵活扩展的代码)。
  • 针对接口编程,不针对实现编程(经过接口调用,而不是具体的实现调用)。
  • 多用组合,少用继承。(尽可能不经过继承获取某个功能,而是经过组合的方式,获取)
  • ...


3、如何遵照六原则(引用)

对六原则的遵照不是是和否的问题,而是多和少的问题,也就是说,咱们不会说有没有遵照,而是遵照程度的多少。任何事情都是过犹不及,设计模式的六原则也同样,制定六原则不是为了让咱们刻板的遵照他们,而须要根据实际状况去灵活运用。对他们的遵照程度只要在合理范围内,就算良好的设计了,如下用图来描述下:框架

图中的每一条维度各表明一项原则,咱们依据对这项原则的遵照程度在维度上画一个点,则若是对这项原则遵照的合理的话,这个点应该落在红色的同心圆内部;若是遵照的差,点将会在小圆内部;若是过分遵照,点将会落在大圆外部。一个良好的设计体如今图中,应该是六个顶点都在同心圆中的六边形学习

在上图中,设计一、设计2属于良好的设计,他们对六项原则的遵照程度都在合理的范围内;设计三、设计4设计虽然有些不足,但也基本能够接受;设计5则严重不足,对各项原则都没有很好的遵照;而设计6则遵照过渡了,设计5和设计6都是迫切须要重构的设计。设计



4、总结

设计模式是很重要的一门技术,若是要提高本身的竞争力,往架构师方向走的话设计模式是必不可少的。目前的Java体系中大量运用了设计模式,如IO的装饰器模式、Spring IOC的工厂模式,单例模式、Spring MVC的适配器模式、Spring AOP的代理模式,适配器模式等等,学习设计模式能够帮助本身理解源码,相对的,学习设计模式时能够结合现有的Java体系中的设计模式,阅读其源码,结合实际应用学习,能够达到很好的学习效果。代理



参考:code

相关文章
相关标签/搜索