设计模式复习笔记

2.1 工厂方法和抽象工厂方法

创建型软件设计模式

  • 工厂模式:将类的选择和对象的创建分装在一个方法(工厂方法),而将这个方法封装在一个独立的类(工厂类)

    • image-20220610195910730
  • 简单工厂方法模式

    • image-20220610200522769

    • image-20220610200429989

  • 工厂方法模式

    image-20220610201001988

    • 简单工厂和工厂方法的区别

      • 两者中心不同
      • 是否支持开闭原则
      • 创建对象逻辑判断的位置
    • 工厂方法适用场景

      • 创建的类对象的逻辑复杂,还可能增加新的条件
      • 需要分装创建类的逻辑
  • 抽象工厂模式

image-20220610214619096

  • 简单工厂模式一般不符合开闭原则。在简单工厂模式中,如果要增加一个新产品类,相应地在工厂类中也要增加一个条件语句,用于创建新的产品类的对象。也就是说,必须修改工厂类的源代码。
    工厂方法模式和抽象工厂模式符合开闭原则。因为在工厂方法模式和抽象工厂模式中,无需修改或者重新编译已经存在的代码,就可以添加新的产品类。
    开闭模式是指对扩展开放,对修改关闭,说的更通俗点,就是说开发了一个软件,应该可以对它进行功能扩展(开放),而在进行这些扩展的时候,不需要对原来的程序进行修改(关闭)。

2.2生成器模式

  • 生成器模式

    • image-20220610222327754

    image-20220610224739405

2.3 单例模式

  • 确保一个类有唯一的实例,并且提供一个全局的访问节点

  • image-20220610225750905

  • image-20220610230432584

image-20220610232210650

结构性软件设计模式

  • 概述

    • 动机:结构型软件设计模式的主要目的是将不同的类和对象组合在一起,形成更大或者更复杂的结构体
    • 内容:
      • 组合模式 将一个或者多个相似的对象构成组合对象
      • 适配者模式 提供一种机制改变原来不适合的接口
      • 外观模式 新建一个外观类,通过调用原有的类库中众多的类地方式,实现外观类的所有方法

3.1组合模式

image-20220611111942396

  • 安全形式

    image-20220611142820668

  • 透明形式

3.2适配器模式

  • 概念: 为了解决接口不一致的问题,两个软件模块之间往往也需要通过一个适配器类Adapter进行适配,具体分为 1.类适配器模式,2.对象适配器

    image-20220611145010090

    • 继承—不需要在adapter中写父类的函数
    • 聚合—要把父类中的函数全部写到adapter中
  • 类适配器模式

image-20220611151225787

  • 对象适配器模式

image-20220611151158928

  • 适配器模式的作用

    image-20220611165137960

  • 区别

image-20220611165438452

3.3外观模式

  • 概念(使用聚合关系到外观类)

    image-20220611172312280

image-20220611172439528

  • 目的

    image-20220611173854458

3.4桥接模式

  • 概念

    image-20220611205044314

  • 例子

    image-20220611212605527

行为型软件设计模式

4.1迭代者模式

image-20220611213338589

image-20220611221231683

4.2访问者模式

image-20220612014151080

image-20220612014925875

image-20220612015041320

  • 使用访问者模式的情况

    1. 当一个对象的结构中,包含有多种类型的具有不同接口的对象,且用户要在这些对象上进行依赖于具体的类的运算时,需要用到访问者模式;

    2. 当有多个不同的并且互不相关的运算将作用到这些对象上,而用户不希望这些运算混淆这些类时,可以使用访问者模式将相关的操作放到一个独立的类中;

    3. 在对象的数据类型很少改变,但是需要经常改变操作或者增加新操作的情况下,可以使用访问者模式。

  • 优点:

    1. 使得在访问者类中添加复杂类结构的某个类添加新方法较为容易,即只需要添加一个新的访问者方法即可。
    2. 访问者将相关的方法集中在一个具体的访问类中,而将其他相关方法集中到另一个具体的访问类中
  • 缺点:增加一个新的concreteElement类较为困难

image-20220612141448684

image-20220612141121037

4.4中介者模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nnkJ4h0Y-1655048390860)(https://s2.loli.net/2022/06/12/vLV3kQmKejoug4N.png)]

概念

image-20220612163649621

例子

image-20220612172832782

image-20220612174612792

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QB4fsnxt-1655048390863)(C:\Users\鲸落\AppData\Roaming\Typora\typora-user-images\image-20220612174545312.png)]

优点

image-20220612172738508

4.5策略模式

引言

image-20220612174924920

概念

image-20220612190401964

image-20220612190443299

使用情况

image-20220612191832537

优缺点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vyFjxxX5-1655048390866)(C:\Users\鲸落\AppData\Roaming\Typora\typora-user-images\image-20220612192130859.png)]

可拓展性

image-20220612193908632

4.6状态模式

引言

image-20220612195307175

image-20220612195533857

应用

image-20220612195949662

对比

image-20220612200434577

例子

image-20220612201423040

image-20220612201404362

简答

网格计算的工作原理如下:

(1)主集群服务器利用中间件将任务分成一些子任务,并且打包以后通过互联网将这些任务发送到许多局部集群服务器中。

(2)每个局部集群服务器寻找可用的PC或者其他计算机,并且将这些任务分派 给这些计算机。

(3)这些计算机同时进行所要求的计算, 然后将完成计算的结果与数据通过互联网发送回主集群服务器。

(4)主集群服务器将完成的任务整合在 一起,并且存入大型数据库

请简述集中目录式P2P的优缺点。

  • 优点:

(1)集中目录式P2P采用中央目录服务器管理P2P各结点,P2P结点向中央目录服务器注册关于名称、地址、资源、元数据、所能提供的服务等自身的信息,但所有的内容存储在各结点中而非服务器上。

(2)一个结点要查找某种服务时,首先要连接到目录服务器,然后根据目录服务器中的信息查询以及网络流量的延迟等信息来选择与定位其他对等点。一旦找到了所要连接的结点,则直接与其建立连接,而不必经过中央目录服务器进行。

  • 缺点:网络的稳定性较差。一旦服务器失效,则该服务器下的对等结点可能全部失效。

SOA工作机制如下:

  • 服务提供者将要暴露的服务注册到公共服务注册器(Registry)中; – 服务消费者查询服务注册器,寻找符合需求的服务。如果服务注册器中有这样的服 务,它将为消费者提供该服务的描述信息; – 服务消费者与服务提供者将直接绑定,服务提供者开始为服务消费者执行相应服务。

猜你喜欢

转载自blog.csdn.net/qq_52281545/article/details/125252084
今日推荐