目录
创建型模式:
将创建对象的部分脱离出来,不需要调整原有的业务逻辑的代码
工厂方法模式:
定义一个创建对象的接口,由子类决定要实例化哪一个类,
在运行的时候去指定要创建的类是哪一个对象,使得实例化过程推迟了
抽象工厂模式:
提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类
只要制定系列名,而不需要制定具体的类,就能生产出这一系列所需要的类的对象
原型模式:
用原型实例制定创建对象的类型,并且通过拷贝这个原型来创建新的对象
克隆模型,拷贝现有对象来生产新的对象,使得效率提高,而new一个新对象就会消耗更多的资源
单例模式:
保证一个类只有一个实例,并提供一个访问它的全局访问点
构建器模式:
当要构造某个复杂的对象,对象是有多个对象组合起来的,但是构造不同的实例,可能需要的构件不一样,这个时候就需要构建器模式,将需要的各个部分封装起来,对各个部分指定不同的构件,最后形成需要的实例。
将一个复杂类的表示与其构造相分离,使其相同的构建过程能够得出不同的表示
结构型模式:
处理类和对象的组合问题
适配器模式:
将一个类的接口转成用户希望得到的另一种接口,使原本不相容的接口得以协同工作。(转换接口)
桥接模式:
类的抽象部分和它的实现部分分离出来,使他们可以独立的变化。(继承树的拆分)
组合模式:
将对象组合成树型结构以表示整体—部分的层次结构,使得用户对单个对象和组合对象的使用具有一致性(树型目录结构)
装饰模式:
动态的给一个对象添加一些额外的职责,它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活(附加职责)
外观模式:
定义了一个高层的接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用(对外统一接口)
享元模式:
提供支持大量细粒度对象共享的有效方法
代理模式:
为其他对象提供一种代理以控制这个对象的访问
行为型模式:
主要描述类和对象的交互情况,以及职责分配问题
职责链模式:
通过给多个对象处理请求的机会,减少请求的发送者和接受者之间的耦合,将接受对象连接起来,在链中传递请求,知道有一个对象处理这个请求(传递职责)
类似于财务审批,主管可以审批500以内,财务总监1000以内,经理2000以内,总经理2000以上,审批的金额都有不同,将不能处理的传递下去,因此使请求者不用跟多个接受者交互,只要传递一次就可以处理
命令模式:
将一个请求封装成对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作(日志记录)
不是一个简单的消息,而是将消息封装成对象,方便对命令记录,撤销之前的命令工作
解释器模式:
给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子
类似于构造一个虚拟机来解释问题
迭代器模式:
提供一种方法来顺序访问一个聚合对象中的各个元素,而不要需要暴露该对象的内部表示
枚举类型遍历的时候,就用到了迭代器模式
中介者模式:
用一个中介对思想来邓庄一系列的对象交互,它使各对象不需要显式的相互调用,从而达到低耦合,还可以独立的改变对象间的交互(不直接引用)
两者之间可以直接通信,但现在引入一个中介者进行通信,当有一方发生变化,只要修改中介者就可以了
备忘录模式:
在不破坏封装性的前提下,补货一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态
开辟一个空间,把对象相关信息存下来,就可以做恢复的操作
观察者模式:
定义对象见的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新
状态模式:
允许一个对象在其内部状态改变时改变它的行为(状态变成类)
状态的改变就根据当前状态的行为发生变化,会员的不同状态级别可以享受不同的折扣,将会员的状态级别定义为类,每一种类设计的行为已经做好设计了
策略模式:
定义一系列的算法,把他们一个个封装起来,并且是他们之间可互相替换,从而让算法可以独立于使用它的用户而变化
对一组树进行排序,可以用冒泡,快速等方法,涉及到灵活的多种方法切换的时候就用到策略模式
模板方法模式:
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤
访问者模式:
表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作