美文网首页
设计模式

设计模式

作者: 流光已至 | 来源:发表于2019-05-20 15:57 被阅读0次

    Java中23种经典设计模式详解
    设计模式详解

    1 工厂方法

    定义一个用于创建对象的接口,让子类决定实例化哪一个类

    2 抽象工厂

    提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

    3 建造者模式(Builder)

    工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性
    工厂模式关注的是创建单个产品,而建造者模式则关注创建复合对象,多个部分。因此,是选择工厂模式还是建造者模式,依实际情况而定。

    4 原型模式

    该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象

    5 单例模式
    上为5 种创建型设计模式,下为7 种结构型设计模式
    6 适配器模式

    适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。

    7 装饰者模式

    装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例

    8 代理模式

    代理模式就是多一个代理类出来,替原对象进行一些操作

    9 外观模式

    外观模式是为了解决类与类之间的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口

    10 桥接模式

    桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,
    像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了

    11 组合模式

    组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便

    12 享元模式

    享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用

    以下为11种行为模式
    13 策略模式

    策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口

    14 模板模式

    1

    15 观察者模式(Observer)

    当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系

    16 迭代器模式

    迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见

    17 责任链模式

    有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。

    18 命令模式

    命令模式的目的就是达到命令的发出者和执行者之间解耦,实现请求和执行分开

    19 备忘录模式

    主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些

    20 状态模式(State)

    核心思想就是:当对象的状态改变时,同时改变其行为

    21 访问者模式

    访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化,
    简单来说,访问者模式就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者动态添加新的操作而无需做其它的修改的效果。

    22 中介者模式

    中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。

    23 解释器模式(Interpreter)

    一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。

    相关文章

      网友评论

          本文标题:设计模式

          本文链接:https://www.haomeiwen.com/subject/prtczqtx.html