本篇博客仅以个人学习记录使用
介绍
一个模式就是一个可重用的方案,可应用于在软件设计中的常见问题,通常情况下,
模式是行之有效的解决方法:他们提供固定的解决方法来解决在软件开发中出现的问题
模式可以很容易地重用:一个模式通常反映了一个可以适应自己需要的开箱即用的解决方案。这个特性让它们很健壮。
模式善于表达:当我们看到一个提供某种解决方案的模式时,一般有一组结构和词汇可以非常优雅地帮助表达相当大的解决方案
分类
创建型设计模式
创建型设计模式关注于对象创建的机制方法,通过该方法,对象以适应工作环境的方式被创建。基本的对象创建方法可能会给项目增加额外的复杂性,而这些模式的目的就是为了通过控制创建过程解决这个问题。
属于这一类的一些模式是:构造器模式(Constructor),工厂模式(Factory),抽象工厂模式 (Abstract),原型模式 (Prototype),单例模式 (Singleton)以及 建造者模式(Builder)
创建型设计模式
结构模式关注于对象组成和通常识别的方式实现不同对象之间的关系。该模式有助于在系统的某一部分发生改变的时候,整个系统结构不需要改变。该模式同样有助于对系统中某部分没有达到某一目的的部分进行重组。
在该分类下的模式有:装饰模式,外观模式,享元模式,适配器模式和代理模式。
行为设计模式
行为模式关注改善或精简在系统中不同对象间通信。
行为模式包括:迭代模式,中介者模式,观察者模式和访问者模式。
根据创建对象的概念分类
Factory Method(工厂方法):通过将数据和事件接口化来构建若干个子类。
Abstract Factory(抽象工厂):建立若干族类的一个实例,这个实例不需要具体类的细节信息。(抽象类)
Builder (建造者):将对象的构建方法和其表现形式分离开来,总是构建相同类型的对象。
Prototype(原型):一个完全初始化的实例,用于拷贝或者克隆。
Singleton(单例):一个类只有唯一的一个实例,这个实例在整个程序中有一个全局的访问点。
根据构建对象块的方法分类
Adapter(适配器):将不同类的接口进行匹配,调整,这样尽管内部接口不兼容但是不同的类还是可以协同工作的。
Bridge(桥接模式):将对象的接口从其实现中分离出来,这样对象的实现和接口可以独立的变化。
Composite(组合模式):通过将简单可组合的对象组合起来,构成一个完整的对象,这个对象的能力将会超过这些组成部分的能力的总和,即会有新的能力产生。
Decorator(装饰器):动态给对象增加一些可替换的处理流程。
Facada(外观模式):一个类隐藏了内部子系统的复杂度,只暴露出一些简单的接口。
Flyweight(享元模式):一个细粒度对象,用于将包含在其它地方的信息 在不同对象之间高效地共享。
Proxy(代理模式):一个充当占位符的对象用来代表一个真实的对象。
基于对象间作用方式分类
Interpreter(解释器):将语言元素包含在一个应用中的一种方式,用于匹配目标语言的语法。
Template Method(模板方法):在一个方法中为某个算法建立一层外壳,将算法的具体步骤交付给子类去做。
Chain of Responsibility(响应链):一种将请求在一串对象中传递的方式,寻找可以处理这个请求的对象。
Command(命令):封装命令请求为一个对象,从而使记录日志,队列缓存请求,未处理请求进行错误处理 这些功能称为可能。
Iterator(迭代器):在不需要直到集合内部工作原理的情况下,顺序访问一个集合里面的元素。
Mediator(中介者模式):在类之间定义简化的通信方式,用于避免类之间显式的持有彼此的引用。
Observer(观察者模式):用于将变化通知给多个类的方式,可以保证类之间的一致性。
State(状态):当对象状态改变时,改变对象的行为。
Strategy(策略):将算法封装到类中,将选择和实现分离开来。
Visitor(访问者):为类增加新的操作而不改变类本身。
总结
设计模式有很多,大多数都是遵循设计原则,结合经验和问题所衍生出来的,设计模式也可以很灵活,虽然设计模式在解决软件开发问题当中有很大的作用但是在开发的过程中,不能因为设计模式而去设计模式,要正确认识和理解的去学习,才能更好的发挥作用。