当前位置: 首页 > news >正文

HCIP-5OSPF区域类型学习笔记

1、OSPF区域类型

OSPF提出了区域的概念(AREA),区域是将所有运行OSPF 的路由器人为的分成不同的组,以区域ID来标示。在区域内路由计算的方法不变,由于划分区域之后,每个区域内的路由器不会很多,所有上述缺陷表现得并不严重,带来的后果可以忽略不计。

实际上OSPF 协议在当今的网络中广为流行,不仅是它使用了无环路的链路状态算法,而是它提出了区域的概念。
ospf区域类型
如果某区域不需要为其他区域提供流量中转服务,那么该区域内的路由器就没有必要维护本区域外的链路状态数据库。

OSPF通过划分区域可以减少网络中LSA的数量,而可能对于那些位于自治系统边界的非骨干区域的低端路由器来说仍然无法承受,所以可以通过OSPF的特殊区域特性进一步减少LSA数量和路由表规模。
在这里插入图片描述

1.1、STUB 区域

STUB区域是一些特定的区域,STUB区域的ABR不传播它们接收到的自治系统外部路由,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。

STUB区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,STUB区域位于自治系统的边界,是那些只有一个ABR的非骨干区域

为保证到自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由,并发布给STUB区域中的其他非ABR路由器。

配置STUB区域时需要注意下列几点:
● 骨干区域不能配置成STUB区域。
● 如果要将一个区域配置成STUB区域,则该区域中的所有路由器都要配置STUB区
域属性。
● STUB区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
● 虚连接不能穿过STUB区域。

1.1.1、Stub区域

在这里插入图片描述
在这里插入图片描述
配置:特殊区域的所有设备都要配置

[RTB]ospf 1
[RTB- ospf-1]area 1
[RTB- ospf-1- area-0.0.0.1]stub
[RTD]ospf 1
[RTD- ospf-1]area 1
[RTD- ospf-1- area-0.0.0.1]stub

display ospf routing
在这里插入图片描述
1、2、3类LSA和一条缺省的3类LSA。

1.1.2、Totally STUB区域

![在这里插入图片描述](https://img-blog.csdnimg.cn/a67d0f68f668440f91cb8a9ad15ca757.png#pic_center =600x350r)
1、2类LSA和一条缺省的3类LSA。
如果RTC性能太差了,为了减少功耗,将区域间的路由也隔离出去。这就配置成完全的末梢区域,就只有区域内和默认路由。

配置:只需设置ABR路由

[RTB]ospf 1
[RTB- ospf-1]area 1
[RTB- ospf-1- area-0.0.0.1]stub no-summary

display ospf routing
在这里插入图片描述

1.2、NSSA 区域 常用

1.2.1、NSSA区域

NSSA(Not-So-Stubby Area)区域是OSPF特殊的区域类型。NSSA区域与STUB区域有许多相似的地方,两者都不传播来自OSPF网络其它区域的外部路由。差别在于OSP不能引入外部路由,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中。

当区域配置为NSSA区域后,为保证到自治系统外的路由可达,NSSA区域的ABR将生成一条缺省路由,并发布给NSSA区域中的其他路由器。

配置NSSA区域时需要注意下列几点:
● 骨干区域不能配置成NSSA区域。
● 如果要将一个区域配置成NSSA区域,则该区域中的所有路由器都要配置NSSA区域属性。
● 虚连接不能穿过NSSA区域。

在这里插入图片描述

NSSA区域可以避免大量外部路由对路由器带宽和存储资源的消耗。
NSSA区域的ABR收到七类LSA时,会有选择地将其转换为五类LSA,以便将外部路由信息通告到OSPF网络的其它区域。

1、2、3、7类LSA和一条缺省的7类LSA。不那么末梢的区域NSSA区域。
hello报文option选项:
默认情况下,E位为1 --可以接收外部路由的E位为0,N位为1 ----NSSA区域。
在这里插入图片描述
Option字段:

  • Option可选字段出现在每一个Hello数据包、DD和每个LSA中的。
  • Option字段允许路由器和其他路由器进行一些可选性能的通信。
    在这里插入图片描述
    七转五
    在这里插入图片描述
    外部路由–>RTD–>Area 1七转五–> Area 0 五类LSA–>Area 2
    RTC生成四类LSA。如果有多个ABR,为了防环,Router ID比较大的进行七转五。

在NSSA区域内可以拥有ASBR,并且重分发进入OSPF的路由是以7类LSA形式存在,该类型的LSA只能存在于NSSA区域内,并且该区域所有ABR会通过比较RID选举出一个 转换器(最大的RID 者),该转换器会将内部传递给外部的NSSA LSA转换成5类LSA并且通告给其他区域,所有该区域内的ABR都会过滤从外部进入该区域的4.5类LSA,在华为设备上,默认会给内部区域内的设备下发一条7类ON2 0.0.0.0/0的缺省默认路由。

配置:特殊区域的所有设备都要配置

[RTB]ospf 1
[RTB- ospf-1]area 1
[RTB- ospf-1- area-0.0.0.1]nssa
[RTD]ospf 1
[RTD- ospf-1]area 1
[RTD- ospf-1- area-0.0.0.1] nssa

nssa实例1

R2
ospf 1area 0.0.0.0network 12.0.0.0 0.0.0.255area 0.0.0.1network 24.0.0.0 0.0.0.255nssaR3
ospf 1area 0.0.0.0network 13.0.0.0 0.0.0.255area 0.0.0.2network 35.0.0.0 0.0.0.255nssa
ospf 1area 0.0.0.1network 24.0.0.0 0.0.0.255nssaR5
ospf 1area 0.0.0.2network 35.0.0.0 0.0.0.255

引入外部路由:

R4
ip route-static 10.0.0.0 255.0.0.0 NULL0
ospf 1import-route static
[R4]dis ospf lsdbOSPF Process 1 with Router ID 4.4.4.4Link State Database Area: 0.0.0.1Type      LinkState ID    AdvRouter          Age  Len   Sequence   MetricRouter    4.4.4.4         4.4.4.4             43  36    80000005       1Router    2.2.2.2         2.2.2.2            306  36    80000006       1Network   24.0.0.2        2.2.2.2            306  32    80000002       0Sum-Net   35.0.0.0        2.2.2.2            354  28    80000001       3Sum-Net   13.0.0.0        2.2.2.2            383  28    80000001       2Sum-Net   12.0.0.0        2.2.2.2            383  28    80000001       1NSSA      10.0.0.0        4.4.4.4             43  36    80000001       1NSSA      0.0.0.0         2.2.2.2            383  36    80000001       1

1、2、3、7类LSA。

[R4]display ospf lsdb nssaOSPF Process 1 with Router ID 4.4.4.4Area: 0.0.0.1Link State Database Type      : NSSA                         //类型Ls id     : 10.0.0.0                       //目的网段地址  外部的IPAdv rtr   : 4.4.4.4                        //宣告者Ls age    : 271 Len       : 36 Options   :  NP                         // NSSA区域seq#      : 80000001 chksum    : 0xcec3Net mask  : 255.0.0.0 TOS 0  Metric: 1 E type    : 2                            //外部路由类型默认为2,Forwarding Address : 24.0.0.4 Tag       : 1 Priority  : LowType      : NSSALs id     : 0.0.0.0Adv rtr   : 2.2.2.2  Ls age    : 611 Len       : 36 Options   : None seq#      : 80000001 chksum    : 0xc404Net mask  : 0.0.0.0 TOS 0  Metric: 1 E type    : 2Forwarding Address : 0.0.0.0
<R4>display ip rout pro ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPFDestinations : 4        Routes : 4        OSPF routing table status : <Active>Destinations : 4        Routes : 4Destination/Mask    Proto   Pre  Cost       Flags  NextHop        Interface0.0.0.0/0   O_NSSA  150  1           D   24.0.0.2        G0/0/112.0.0.0/24  OSPF    10   2           D   24.0.0.2        G0/0/113.0.0.0/24  OSPF    10   3           D   24.0.0.2        G0/0/135.0.0.0/24  OSPF    10   4           D   24.0.0.2        G0/0/1
<R4>dis ospf routOSPF Process 1 with Router ID 4.4.4.4Routing Tables Routing for Network Destination        Cost  Type       NextHop         AdvRouter       Area24.0.0.0/24        1     Transit    24.0.0.4        4.4.4.4         0.0.0.112.0.0.0/24        2     Inter-area 24.0.0.2        2.2.2.2         0.0.0.113.0.0.0/24        3     Inter-area 24.0.0.2        2.2.2.2         0.0.0.135.0.0.0/24        4     Inter-area 24.0.0.2        2.2.2.2         0.0.0.1Routing for NSSAsDestination        Cost      Type       Tag         NextHop         AdvRouter0.0.0.0/0          1         Type2      1           24.0.0.2        2.2.2.2Total Nets: 5  Intra Area: 1  Inter Area: 3  ASE: 0  NSSA: 1

七转五

<R2>display ospf abr-asbrOSPF Process 1 with Router ID 2.2.2.2Routing Table to ABR and ASBR RtType      Destination       Area       Cost  Nexthop      TypeIntra-area   3.3.3.3           0.0.0.0    2     12.0.0.1        ABR Intra-area   4.4.4.4           0.0.0.1    1     24.0.0.4

R1查看已转五类

<R1>display ip rout pro ospf 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
OSPF routing table status : <Active>Destinations : 3        Routes : 3
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface10.0.0.0/8   O_ASE   150  1           D   12.0.0.2        G0/0/024.0.0.0/24  OSPF    10   2           D   12.0.0.2        G0/0/035.0.0.0/24  OSPF    10   2           D   13.0.0.3        G0/0/0

查看四类LSA

<R3>display ospf lsdb asbr self-originate OSPF Process 1 with Router ID 3.3.3.3Area: 0.0.0.0Link State Database Area: 0.0.0.2Link State Database Type      : Sum-AsbrLs id     : 2.2.2.2Adv rtr   : 3.3.3.3  Ls age    : 654 Len       : 28 Options   :  E                 //允许外部路由seq#      : 80000002 chksum    : 0xb88cTos 0  metric: 2

Nssa配置中注意的后缀:
1).default-route-advertise
只用于ABR和ASBR。
ABR无论有无默认路由,都生成一个默认的LSA7类默认路由。
ASBR只有本地存在的默认路由,才向区域内生成一个默认的LSA7类默认路由。

2).no-summary
只用于ABR
此参数表示不向区域内通告3类、4类LSA,使用此参数后ABR会向NSSA中通告默认路由。

3).suppress-forwarding-address 抑制转发地址。
no-import-rout不引进外部路由

为了减少路由表的规模,可以配置禁止向NSSA区域通告Type 3 LSA。

[R2] ospf
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] nssa default-route-advertise no-summary

如果存在两个路由器接入
在这里插入图片描述

配置RouterA为转换路由器。

[RouterA] ospf 1
[RouterA-ospf-1] area 1
[RouterA-ospf-1-area-0.0.0.1] nssa default-route-advertise translator-always

1.2.1、Totally NSSA 区域

过滤3类、4类,5类LSA,由NSSA区域的ABR设备产生一条3类LSA 0.0.0.0/0的默认路由。

1、2、7类LSA和一条缺省的7类LSA。
配置:

ospf 1 router-id 11.1.1.1
area 0.0.0.2
nssa no-summary               //把区域2设置为totally nssa区域

2、LSA在各区域中传播的支持情况

区域类型Type 1Type 2Type 3Type 4Type 5Type 7
普通区域(包括标准区域和骨干区域)
Stub区域 末梢区域
Totally Stub区域,完全末梢区域
NSSA区域,非完全末梢区域
Totally NSSA区域,完全NSSA

LSA传播范围:

LSA类型通行路由器LSA内容传播范围
Router-LSA (Type1)ALL ospf router拓扑信息+路由信息本区域内
Network-LSA (Type2)DR拓扑信息+路由信息本区域内
Network-summary-LSA (Type3)ABR域间路由信息非totally stub或nssa区域
ASBR-summary-LSA (Type4)ABRASBR‘s Router ID除ASBR所在的区域的其他区域
AS-external-LSA (Type5)ASBR路由进程域外部路由信息非stub或nssa区域
NSSA LSA (Type7)ASBRNSSA域外部路由信息NSSA区域

相关文章:

HCIP-5OSPF区域类型学习笔记

1、OSPF区域类型 OSPF提出了区域的概念&#xff08;AREA&#xff09;&#xff0c;区域是将所有运行OSPF 的路由器人为的分成不同的组&#xff0c;以区域ID来标示。在区域内路由计算的方法不变&#xff0c;由于划分区域之后&#xff0c;每个区域内的路由器不会很多&#xff0c;…...

C语言再学习第三章

例题3-1 编写一个函数&#xff0c;实现华氏度和摄氏度的转化。 已知公式&#xff1a;c &#xff08;5/9)*(f-32) #include <stdio.h>double f_value 0; double c_value 0; int main(void) {printf("请输入华氏温度\n");scanf("%lf",&f_valu…...

【aiy篇】小目标检测综述

小目标检测&#xff08;Small Object Detection&#xff09;是指在图像中检测尺寸较小的目标物体&#xff0c;通常是指物体的尺寸小于图像大小的1/10或者更小&#xff0c;COCO为例&#xff0c;面积小于等于1024像素的对象维下目标。小目标检测是计算机视觉领域的一个重要研究方…...

常用Linux命令的基本使用

序号 命令 对应英文 作用 1 ls list 查看当前文件夹下的内容 2 pwd print work directory 查看当前所在文件夹 3 cd[目录名] changge directory 切换文件夹 4 touch[文件名] touch 如果文件不存在&#xff0c;新建文件 5 mkdir[目录名] make directory …...

对跳表的深入理解

一&#xff0c;如何理解跳表 简单说跳表&#xff08;Skip list&#xff09;就是链表的“二分查找”。redis 的有序集合用的就是跳表算法。跳表是一种各方面性能都比较优秀的动态数据结构&#xff0c;可以支持快速地插入、删除、查找操作&#xff0c;写起来也不复杂&#xff0c…...

C++017-C++冒泡排序与插入排序

文章目录C017-C冒泡排序与插入排序冒泡排序与插入排序目标冒泡排序排序规则冒泡排序优化插入排序题目描述在线练习&#xff1a;总结C017-C冒泡排序与插入排序 在线练习&#xff1a; http://noi.openjudge.cn/ https://www.luogu.com.cn/ 冒泡排序与插入排序 参考&#xff1a;…...

数据结构基础之链表

目录 前言 1、什么是链表 2、添加元素 3、虚拟头结点 4、查询&修改元素 5、删除元素 附&#xff1a;完整代码 前言 又到周末了&#xff0c;修整了一天&#xff0c;继续来写点东西吧&#xff0c;今天&#xff0c;我们来学习数据结构中的另一种基础的数据结构——链表…...

css 的渲染层合成是什么,浏览器如何创建新的渲染层

在 DOM 树中每个节点都会对应一个渲染对象&#xff08;RenderObject&#xff09;&#xff0c;当它们的渲染对象处于相同的坐标空间&#xff08;z 轴空间&#xff09;时&#xff0c;就会形成一个 RenderLayers&#xff0c;也就是渲染层。渲染层将保证页面元素以正确的顺序堆叠&a…...

nacos-sdk-rust binding to NodeJs

广告时间 nacos-sdk-rust-binding-node : nacos-sdk-rust binding to NodeJs with napi. Tip: nacos-sdk-nodejs 仓库暂未提供 2.x gRPC 交互模式&#xff0c;为了能升级它&#xff0c;故而通过 node addon 方式调用 nacos-sdk-rust npm 包 -> https://www.npmjs.com/packa…...

MySQL下载安装以及环境配置教程

目录MySQL 下载MySQL 安装配置环境变量MySQL 下载 进入官方网站 https://www.mysql.com/ 点击 DOWNLOADS 进入下载页面 免费版本点击下方的 MySQL Community (GPL) Downloads 点击 MySQL Community Server 点击 Go to Download Page 进入下载页面 点击 Download 点击 No thank…...

概率论 1.3 古典概型与几何概型

1.3.1 排列与组合排列从n个不同元素任取r(r<n)个元素排成一列(考虑元素出现的先后次序)&#xff0c;称此为一个排列&#xff0c;此种排列的总数为n(n-1)....(n-r1)n!/(n-r)&#xff01;&#xff0c;若rn,则称为全排列&#xff0c;2.重复排列从n个不同元素中每次取出一个,放回…...

HTML DOM

通过 HTML DOM&#xff0c;可访问 JavaScript HTML 文档的所有元素。HTML DOM (文档对象模型)当网页被加载时&#xff0c;浏览器会创建页面的文档对象模型&#xff08;Document Object Model&#xff09;。HTML DOM 定义了用于 HTML 的一系列标准的对象&#xff0c;以及访问和处…...

Vue组件-$refs、$nextTick和name属性的使用

Vue组件-$refs和$nextTick使用一、获取DOM二、$refs获取组件对象三、$nextTick异步更新DOM四、组件name属性的使用一、获取DOM 通过id或ref属性获取原生DOM 在mounted生命周期 – 2种方式获取原生DOM标签 目标标签 – 添加id / ref恰当时机, 通过id / 通过ref属性 获取目标标签…...

【Spark】Spark的DataFrame向Impala写入数据异常及源码解析

背景 事情是这样的&#xff0c;当前业务有一个场景: 从业务库的Mysql抽取数据到Hive 由于运行环境的网络限制&#xff0c;当前选择的方案&#xff1a; 使用spark抽取业务库的数据表&#xff0c;然后利用impala jdbc数据灌输到hive。&#xff08;没有spark on hive 的条件&…...

学习笔记-架构的演进之限流-3月day03

文章目录前言限流的目标流量统计指标限流设计模式流量计数器模式滑动时间窗模式漏桶模式令牌桶模式分布式限流总结附前言 任何一个系统的运算、存储、网络资源都不是无限的&#xff0c;当系统资源不足以支撑外部超过预期的突发流量时&#xff0c;就应该要有取舍&#xff0c;建…...

动态规划 背包问题

动态规划 背包问题 问题描述&#xff1a; 有一个背包&#xff0c;总容量为12。有6件物品&#xff0c;每件物品的重量和价值不同&#xff0c;求在背包总容量12的前提下&#xff0c;装进物品的最大价值以及装进物品的编号 单个物品重量和价值&#xff1a; 为方便进行思考&#…...

C++ Primer Plus 学习笔记(四)—— 内存模型和名称空间

1 单独编译 C允许将组件函数放在独立的文件即头文件中&#xff0c;头文件中可以包含以下内容&#xff1a; 函数原型&#xff1b;使用#define或const定义的符号常量&#xff1b;结构声明&#xff1b;类声明&#xff1b;模板声明&#xff1b;内联函数。 注意&#xff0c;在包含…...

详解基于 Celestia、Eclipse 构建的首个Layer3 链 Nautilus Chain

以流支付为主要概念的Zebec生态&#xff0c;正在推动流支付这种新兴的支付方式向更远的方向发展&#xff0c;该生态最初以Zebec Protocol的形态发展&#xff0c;并从初期的Solana进一步拓展至BNB Chian以及Near上。与此同时&#xff0c;Zebec生态也在积极的寻求从协议形态向公链…...

列表与数组的转化

目录用np.array(a)将列表转换为数组列表转数组的特殊情况(一)列表转数组的特殊情况(二)针对子元素个数不一致的解决办法用a.tolist()函数将数组转化为列表在python的学习中&#xff0c;经常会用到数组与列表的相互转化&#xff0c;本文主要介绍下关于数组与列表转化的问题。用n…...

docker 运行花生壳实现内外网穿透

环境&#xff1a;centos 7 ,64位 1、创建一个指定的文件夹作为安装示例所用&#xff0c;该示例文件夹为“hsk-nwct”。“hsk-nwct”内创建“app”文件夹作为docker容器挂载出来的文件。 2、在“app”内下载花生壳linux安装包&#xff0c;下载花生壳应用&#xff1a;花生壳客户…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...