软件设计师:做题笔记

123 阅读26分钟

1、加密技术与认证技术

窃听(加密)、篡改(摘要)、否认+假冒(数字签名、数字证书)

加密技术:

窃听:

1、对称加密:加密和解密使用同一把钥匙,只有一把钥匙
            但是钥匙分发是问题;
            优点:加密解密速度快,适合数据量大
            
2、非对称加密:加密和解密使用两把钥匙;
            公钥(所有人都知道)和私钥;
            用公钥加密只能用私钥解密,用私钥加密只能用公钥解密;
            用接收方的公钥加密明文(接收方可以用自己的私钥解密);
            可以防止窃听;
            加密解密速度慢;
            密钥分发没问题;
3、混合加密:对明文使用对称密钥加密,将**对称密钥和对称密钥加密后的密文**(如下图所示)使用接收方的公钥加密

image.png

摘要和数字签名:

篡改:

信息摘要:使用哈希算法处理明文生成信息摘要,将信息摘要和加密后的密文一起发送;接收方将密文解密,对密文进行同样的哈希算法,得到的摘要和传送过来的信息摘要进行比较,若不一致,则说明明文被篡改了。

篡改+假冒+否认:

数字签名:使用哈希算法处理明文生成信息摘要,用发送方的私钥对信息摘要进行加密;将明文用接收方的公钥进行加密;将加密后的明文和加密后的信息摘要一起发送出去;接收方收到后,使用发送方的公钥进行解密,得到信息摘要,若能解密成功,则说明这个信息是发送方发送过来的,发送方不能假冒和否认;使用自己的私钥进行解密,得到明文,对明文运用哈希算法得到信息摘要,将两个信息摘要进行对比,如果一致,则么有被篡改。

认证技术:

CA:权威机构 数字证书:用户向CA申请数字证书:用户的信息,用户的公钥,该证书用CA的私钥加密;

接收方可以直接从CA拿发送方的数字证书,用CA的公钥解密,得到发送方的公钥,防止公钥被篡改;

加密算法(对称加密(分组加密,私钥加密,共享密钥加密);非对称加密(公钥加密)):

image.png

X.509(RSA),国密SM2(ECC)使用的都是公钥密码算法

浏览器、服务器之间用于加密http消息的方式是会话加密,会话加密需要对称加密技术。

防止重放攻击的方法:在报文中加入时间戳

2、位示图

每一位仅对应文件存储器上的一个物理块,取值0和1分别表示空闲和占用。 文件存储器上的物理块依次编号为:0,1,2,.......。

3、总线

总线分为片内总线、系统总线、通信总线

片内总线用于芯片内部各个部件之间的数据传输,如控制器、运算器、寄存器

系统总线用于CPU、主存、外设间的信息传输

通信总线用于计算机系统与其他系统之间的通信

PCI总线:并行传输的内总线;

SCSI总线:并行外总线;

USB:即插即用,热插拔,串行总线;

IEEE-1394;串行外总线

4、OSI参考模型

应用层:提供OSI用户服务;事务处理程序、电子邮件、网络管理程序;提供网络和用户软件之间的接口服务;

表示层:为应用层信息进行加密和压缩,只关心语法或语义;

会话层:为表示层建立、结束、维护会话连接的功能;逻辑名字和物理名字对应;

传输层:为会话层提供透明可靠的数据传输服务;

网络层:为传输层提供交换网络数据传送功能,使传输层摆脱网络传输细节;通信路径;报错

数据链路层:传送以帧为单位的数据,进行流量控制;保证数据线路进行可靠的数据传输

物理层:提供机械、电气、功能、规程;提供位流和故障检测指示

5 协议

DNS-UDP,将主机域名解析为IP地址

远程登录服务(Telnet)-TCP(23),未加密,不安全,使本地用户可以通过TCP连接登录到远程主机上

安全远程登录协议:SSH

电子邮件服务(SMTP,POP3)-TCP
POP3:邮局协议,用于接收邮件,从服务器上读取邮件,允许用户从服务器上读取邮件保存到本地主机,同时删除保存在服务器上的邮件,默认端口号110;
SMTP:简单邮件传输协议,负责邮件的发送,电子邮件客户端->服务器端;
IMAP:交互邮件访问协议,在电子邮件客户端收取的文件仍然保存在服务器上,同时在客户端的操作会反馈到服务器,如删除邮件、标记已读;
MIME:多用途互联网邮件扩展类型,MIME消息能包括文本、图像、音频、视频等**多媒体数据,与安全无关**
PGP(优良保密协议):用于信息加密,验证的应用程序
主域名服务器在接收到域名请求后,首先查询的是本地缓存

WWW服务-TCP

文件传输服务(FTP)-TCP

SNMP:应用层协议,可以使用多种传输层协议(TCP、UDP),主要使用UDP协议,使用UDP协议不需要连接的建立与维护,报头短,因此延时小、速度快;SNMP->UDP->IP

TCP:传输层协议,面向连接,可靠的;HTTP->TCP->IP; TLS:传输层安全协议,用于两个通信应用程序之间提供保密性和数据完整性

IP、ICMP:无连接,在网络层

聊天软件使用UDP协议,网页使用TCP协议(基于WinSock接口),DNS配置(将网站域名解析成IP地址)错误会导致无法打开网页。

https和http的区别: 1、http是超文本传输协议,明文传输;https是ssl加密传输; 2、http端口号是80;https端口号是443; 3、https需要到CA申请证书,收费; 4、http是无状态的,连接简单;https是ssl+http构建的可进行加密传输、身份认证的网络协议,比http安全;

IP和MAC的区别: 1、IPV4:32位; IPV6:128位; MAC:48位; 2、IP是网络层,MAC在数据链路层; 3、IP基于网络拓扑的逻辑规划,MAC基于制造商分配; 4、MAC全国唯一,IP不唯一

FTP:可靠不安全的文件传输协议

TFTP:不可靠不安全的文件传输协议

SFTP:在FTP的基础上增加SSH加密,可靠安全的文件传输协议

ICMP:Internet控制协议,与文件传输无关

ARP:地址解析协议,ARP request:地址解析请求协议,根据目的主机的IP获得MAC地址,广播形式;ARP reponse:单播

内部网关协议(IGP):OSPF,RIP

外部网关协议(BGP):EGP

类似202.117.0.0/16,是指对于202.117.0.0这个IP地址,其子网掩码从左到右的16位全部是1,左边16位是网络位,右边16位是主机位,这表示了可以包含IP地址范围为202.117.0.0-202.117.255.255的主机的网段,202.117.0.0是网络号。

DHCP:动态主机设置协议,局域网,可自动、手动为主机设置IP地址,也可以设置永久、临时IP地址;DHCP动态分配IP地址的主机上,如果主机开机后没有获得动态地址,那么,主机会在169.254.0.0的网段中找一个没有冲突的地址,这个地址属于特殊地址字段,在分配不到DHCP地址时使用。DHCP客户端可以从DHCP服务器获得本机的IP地址,DNS服务器地址,DHCP服务器地址,默认网关的地址等,但没有web服务器,邮件服务器地址。

//<用户名>:<密码>@<主机>:<端口>/<url路径> xxxftp.abc.can.cn,xxxftp主机名,.abc.can.cn子域名,域名,顶级域名

TCP和UDP都提供了端口寻址的能力;

TCP/IP和OSI/RM都是在传输层完成可靠传输;

物理层:中继器;集线器
数据链路层:网桥;交换机;
网络层:路由器;
主机路由的子网掩码是255.255.255.255   
VLAN:允许逻辑地划分网段
交换设备:以太网交换机根据MAC地址进行交换;
        帧中继交换机只能根据虚电路号DLCI进行交换;
        ATM交换机根据虚电路表示进行信元交换;
使用ADSL接入Internet,用户端需要接入PPPoE协议

6 防火墙

1、包过滤防火墙:网络层;识别控制包的源IP和目的IP;控制传输层的UDP、TCP和端口; 2、应用代理网关防火墙:隔断内网外网的直接通信,由防火墙代替 3、状态检测技术防火墙:安全且高速

Web应用防火墙:SQL注入、脚本攻击、参数篡改、应用平台漏洞攻击、拒绝服务攻击、恶意注册、抢票机器人、登录口令暴力破解

入侵防御系统包含入侵检测系统的功能

在防火墙上增加ACL(访问控制功能)可以阻止外部未授权的用户访问内部网络 SANT:内网IP访问公网时,将内网的私有IP转换成公网公有IP 入侵检测:防火墙的补充,第二道安全闸口,从网络关键点获取信息,看看是否有违反安全策略和遭到袭击的现象 防病毒:用户主动性的防范电脑不被外来病毒入侵

防止SQL注入:1、关键字过滤;2、web应用防火墙;3、定期扫描系统漏洞并及时恢复

病毒:

震网病毒是一种蠕虫病毒
计算机病毒:隐蔽性、传染性、潜伏性、触发性、破坏性

7 权利

著作权:终身以及死后50年,自软件完成开发之日自动产生
其中,**署名权、修改权、保护作品完整权**:不受期限限制
商标权可能无限期拥有
署名权不能继承
委托人和受托人没有合同时,著作权属于受托人
翻译权:将软件从一种自然语言文字翻译成另一种自然语言文字的权利
不知情的情况下购买盗版软件安装使用,知道后继续使用属于侵权行为,支付合理费用后可以继续使用

8、软件开发方法

1、结构化:面向数据流、适合数据处理领域、自顶向下、逐层分解
2、Jackson:面向数据结构、小规模项目
3、原型化:需求不清、经常变化
4、面向对象
5、敏捷方法:Scrum并列争球法:迭代、短的时间的迭代称为冲刺、按照需求优先级完成,包括(Product Backlog,Sprint Backlog,Sprint);
            XP极限编程(轻量级,价值观、原则、实践、行为),只处理当前需求,使设计保持简单;先写测试代码后编程;按日甚至小时提供给客户可以运行的代码;系统用户全称配合编程;

9、耦合

数据耦合:有调用关系,传递的是数据

控制耦合:控制;传递的是控制变量

公共耦合:通过公共数据环境相互作用

标记耦合:传递的是数据结构

内容耦合:一个模块直接使用另一个模块的内部数据或通过非正常入口转入另一个模块内部,这种耦合很危险;

耦合度取决于模块间接口的复杂性,调用的方式,传递的信息

10、计算

程序复杂度->McCabe:环路数+1 千小时可靠度:(计算机系统的总数量-失效数量)/总数量

MTTF:平均无故障时间 MTTR:平均修复时间 MTBF:平均故障间隔时间 MTBF=MTTF+MTTR

可靠性:MTTF/(1+MTTF) MTTF/(MTTR+MTTF) 可用性:MTBF/(1+MTBF) 可维护性:1/(1+MTTR)

地址变换:逻辑地址->物理地址 例如:页面大小是4k=1000H,则说明后三位不需要改变,改变第一位即可,逻辑地址是3C20H,根据页面变换表,变成物理地址是6C20H。

文件系统采用索引节点管理: 索引块:1KB,磁盘数据块:1KB,地址项大小:4B; 一个块可以索引1KB/4B=256个地址;

磁盘调度:先移臂,再旋转

image.png

image.png

11、软件测试

面向对象的测试:算法层(测试类中定义的每个方法);类层(测试类中所有方法和属性的相互作用);模板层(类或对象之间的相互作用);系统层:各个子系统组装成面向对象的软件系统

软件测试方法:静态测试和动态测试(黑盒测试+白盒测试)

白盒测试技术中的覆盖方法: 1、语句覆盖:足够多的测试实例将程序中的所有语句都走一遍;但是判断语句时只能走其中的一条语句,因此是很弱的逻辑覆盖;

2、判定覆盖:(分支覆盖)将判定条件的真假都过一遍,无法进行条件中取值的排列组合

3、条件覆盖:使得判定语句的可能取值都满足一遍,比判定覆盖强

4、路径覆盖:覆盖所有可能的路径,有环要走环

软件测试策略:

单元测试:模块接口;局部数据结构;边界条件;出错处理;重要的执行路径;

集成测试:(组装测试)将各个模块按照说明书组装起来进行测试;增量式和非增量式测试;

确认测试:检查软件的功能和性能和用户的需求是否一致;有效性测试,软件配置检查,验收测试,安装测试

12、数据库

Armstrong公理

自反律:Y属于X,X->Y

增广律:X->Y且Z属于U,XZ->YZ

传递律:X->Y且Y->Z,X->Z

合并规则:X->Y且X->Z,X->YZ

伪传递规则:X->Y且YW->Z,XW->Z

分解规则:X->Y且Z属于Y,X->Z


1NF:属性原子不可再分 2NF:非主属性完全依赖于主属性 3NF:非主属性不存在对主属性的传递依赖

2NF存在的问题是:冗余和插入、删除异常


数据字典中保存的是视图的定义


三级模式:外模式/模式/内模式

外模式:用户模式、子模式:用户与数据库系统的接口,用户用到的数据的描述;

内模式:存储模式:数据库在物理存储的描述;

概念模式:模式:全部数据整体逻辑结构的描述


存储过程:可以完成特定功能的SQL语句集,给第三方开发人员调用进行数据更新,但是不会暴露数据库的关系模式


传递依赖:A->BD,B->C,所以A->C,存在传递依赖


分布式数据库:逻辑上是统一的整体,但是物理上存储在不同的物理节点上,一个应用程序可以通过网络的连接访问分布在不同地理位置的数据库;

分布式表现在数据库中的数据不是存储在同一个场地;

可用性:某一场地故障时,系统可以使用其他场地的副本;

多对多联系需要重新建类

事务(ACID): 1、原子性:事务是原子的,要么做,要么都不做; 2、持久性:一旦失误提交成功,即使数据库崩溃,其对数据库的更新操作也永久有效 3、隔离性:事物之间相互隔离,任一事务的操作对其他事物都是不可见的 4、一致性:事务执行结果必须保证事务从一个一致状态到另一个一致状态

13、排序算法

image.png

Kruskal的算法设计策略是 贪心算法(先吃最大的) Dijkstra算法设计策略是 贪心算法

14、调度

调度方式分为可剥夺方式和不可剥夺方式 可剥夺方式:优先级更高的进程到来时,强行分配CPU给更高优先级的; 不可剥夺方式:优先级更高的进程到来时,等待CPU使用完毕;

15 Python和java

异常处理结构:try ...except try...except...finally raise

input():以字符串的格式保存到指定变量中

List:可变、有序、元素可重复

元组:不可变、有序、元素可重复

集合:无序、不能重复

java是即时编译的,java函数中定义的基本数据类型和引用数据类型是在栈中存储使用,new出来的对象以及数组是在堆中分配存储空间的

Lisp是函数式编程语言

16 树

image.png

B树

平衡树,所有叶子节点都位于同一层次上

B树的m阶是指结点的最大孩子数

节点的关键字的左子树都小于该关键字,右子树都大于该关键字

节点中的关键字有序排列

二叉查找树

e08128eb7d16911b72b66d6fe616901.jpg 042ea4fba0ceb8b47fc56702bf91c26.jpg

17 存储器

SRAM: 数据由锁存器存储,不需要动态刷新;存取速度快;元件多,集成度低;功耗大;体积大,制作成本高;

DRAM:集成度高;功耗小;定期刷新;刷新器件时不能进行读写,有效利用时间少

18 CISC RISC

CISC:复杂,指令多,指令长度不固定,寻址方式多,微程序,兼容性强,流水线

RISC:指令少,寻址方式少,指令长度固定,指令复杂度低,硬布线逻辑控制,指令在一个周期内完成,流水线,通用寄存器多

19 风险

风险控制:规避,转移,减轻,接受并控制;风险不能消除

20嵌入式操作系统

微型化、可定制、可移植、实时性、可靠性
可定制:从开发成本和开发周期,将操作系统可以运行在不同的平台

21路径和指令

相对路径:javadoc\
ipconfig:显示计算机IP地址,子网掩码,默认网关,DNS服务
traceroute:利用ICMP协议,并返回访问目标计算机经过的所有路由
netstat:显示协议统计信息,网络连接的状态信息和接口信息,不能用于诊断DNS故障
nslookup:查询DNS记录,查看域名解析是否正常,网络故障时查看网络问题
ping:测试连通性
tracert:可以诊断DNS故障

22UML图

序列图:时间顺序组织的对象之间的交互活动

23编译

词法分析:放到符号表里面,对构成源程序的字符串进行扫描和分解,识别出单词并报告错误;
语法分析:将句子按照语法进行拆分;输入是记号流
语义分析和中间代码生成:语法分析是否有错误,收集类型信息供后面的代码生成阶段使用;(静态语义分析是语法制导翻译)
代码优化
目标代码生成

24浏览器

无痕浏览:下载的文件依然会被保存

25 浮点数

对阶:阶码小的向阶码大的对齐

26 中断

中断方式下,IO与外设交换数据时,CPU可以进行其他操作,中断方式和DMA方式下,都可以实现外设和CPU的并行工作

DMA:在主存和外设之间直接建立数据通道进行数据的交换处理

基本输入输出系统保存在主板上的ROM中

为了便于实现多级中断嵌套,使用堆栈来保护断点和现场最有效

27 开发模型

## 1、增量模型
优先:第一个可交付版本成本和时间少;开发由增量表示的小系统的风险不大;减少用户需求的变更;允许增量投资;

缺点:如果没有对用户需求变更的规划,初始增量会对后续增量产生不稳定;一些增量需要重新发布;管理的成本,进度,复杂度大大增加
## 2、螺旋模型
螺旋模型是瀑布模型和原型模型的结合,它将风险分析加入瀑布模型中,开发周期划分为几个螺旋周期,每个螺旋周期大致和瀑布模型相似;螺旋模型是适合大规模,复杂且具有高风险的项目。

## 3、喷泉模型
面向对象,以用户需求为动力,复用性好,开发过程无间隙,节省时间,具有迭代性

## 4、原型方法
适合于用户需求不清晰,经常发生变化的情况,可以帮助设计用户界面,不能用于代码优化,可以用来探索特殊的软件解决方案

## 5、演化迭代模型
尽量投入使用,在使用过程中不断完善

28 系统设计

用户使用手册是概要设计阶段产生的文档 测试设计文档在需求分析阶段撰写

系统可维护性的衡量指标:可测试性,可修改性,可理解性 可靠性:成熟、容错、易恢复 可移植:适应、易安装、一致性、易替换

29 I/O软件

I/O软件隐藏了I/O操作实现的细节;

向用户提供的是逻辑接口;

30 面向对象设计

面向对象设计时的主要活动:识别类和对象、定义属性、定义服务、识别关系、识别包

31数据结构

循环队列的优点:入队出队不需要移动队列内的其他元素

Huffman编码:将给定的序列按照从小到大排序,最小的两个作为左右孩子,两个的和作为左右孩子的父节点,以此类推

32 CPI,MIPS

CPI:每条指令需要的时钟周期数
MIPS:每秒执行的百万条指令数
f(时钟频率):每秒可产生的时钟周期数
MIPS=f/MCPI:每秒产生的百万条指令数=每秒的时钟周期数/每百万条指令所需要的时钟周期数
Flynn分类法基于信息流特征把计算机分成四类,其中多指令流单数据流(MISD)只有理论意义没有实例

33结构化分析方法

结构化分析方法的输出是:数据字典、数据流图、加工(加工逻辑说明)、补充材料

数据字典:数据流、数据结构、数据项、加工

划分模块时,一个模块的作用范围应该在其控制范围之内。若发现其作用范围不在其控制范围之内,则(1)将判定所在的模块合并到父模块,使判定处于较高层次;(2)将受判定影响的模块下移到控制范围之内;(3)将判定上移到层次较高的位置。

利用结构化分析模型进行接口设计时,应该以数据流图为依据;

结构化设计方法: 模块结构图:模块,调用,数据,控制信息,转接符号

黄金准则:至于用户控制之下,减少用户的记忆负担,保持界面一致

34 软件项目成本估算

COCOMOII:应用组装模型(对象点估算),早期设计模型(功能点和等价代码),后体系结构模型(代码的行数)

软件维护:版本控制,文档分析,逆向工程,配置管理支持,开发信息库,再工程

35 类的设计原则

1、开放封闭原则:实体是可以扩展的,但是不可修改

2、接口分离:不强迫客户依赖于他们不用的方法,依赖于抽象,不依赖于具体

3、共同封闭原则:一个变化对包产生影响,对另一个包不产生影响

36 多态

参数多态:参数可以是抽象的类型 过载多态:同一个名字在上下文有不同的类型 包含多态:不同类的同名成员函数实现的操作不相同 强制多态:把操作对象的类型强行加以变换

37 UML图

4种关系:依赖、关联、泛化、实现 依赖:A------>B 关联:部分------◇整体;聚合,表示整体和部分之间的关系,整体和部分的生命周期不同,整体不在,部分仍然存在;组合,整体和部分之间的关系,整体和部分的生命周期相同,整体不在,部分也不在。 泛化:特殊/一般,子元素的对象可以替代父元素的对象,子元素共享了父元素的结构和行为 实现:类------△接口

视图: 静态视图:类图,对象图,用例图 动态视图:状态图,活动图,顺序图,协作图 物理视图:部署图,构件图 交互视图:顺序图,协作图

1、类图 对象,接口,协作及其之间的关系,静态

2、用例图 用例,参与者以及两者之间的关系,静态 包括 用例,参与者,扩展关系,包含关系(用例和用例之间)

包含:<<include>> 基本用例------>被包含用例
扩展:<<extend>> 扩展用例------>基本用例

3、构件图 一组构件之间的组织依赖关系,静态,把构件映射成一个类,接口,协作,图片是凹凹凸凸的

4、部署图 展示硬件和软件之间的关系,在实施阶段使用,物理,长方体

5、状态图

状态机,由状态,转换,事件,活动组成;
包含简单状态和组合状态;
动态;
对反应型对象建模;
只有一个初态,终态可以没有,也可以有多个;
状态转换:状态一——————————>状态二,横线上是:事件(条件)/动作
状态转换包括两种:事件触发状态转换;箭头未标明事件,则源状态结束后自动转换;  
    事件+条件+迁移 ————>动作
    没有+条件+迁移 ————>动作
    动作可以在状态内部执行,也可以在状态转换时执行;

状态包含三种标准事件:entry(进入),exit(退出),do(内部活动)

若事件触发一个没有特定监护条件的迁移,则对象不一定离开当前状态

6、活动图

特殊的状态图,从一个活动到另一个活动的流程,以时间顺序组织的对象之间的交互活动;
动态
对工作流建模;对操作建模;
并发分岔,并发汇合,分支,合并
监护表达式[......]

7、交互图

顺序图(序列图):对象,链,消息;动态,是强调消息时间序列的交互图;
    
    有对象生命线,垂直的虚线,表示一个对象在一段时间内存在;
    控制焦点,瘦高的矩形,表示一个对象执行一个动作所经历的时间段;
    
协作图(通信图):强调接受和发送消息的对象的结构组织的交互图;
   
   有路径;有顺序号;沿一个链可以显示许多消息,并且每个消息都有唯一的顺序号

8、对象图 某一时刻一组对象以及它们之间的关系,描述了类中建立的事物的实例,包含对象、链、静态可嵌套消息。

对象图的对象名会有:标识,并且对象图的关联关系一般不会出现多重度

38能力成熟度模型(CMM)

五级,五级是最优级,四级是已管理级,三级是已定义级,二级是可重复级,一级是初始级

39 算法

使用贪心算法保证能求得最优解的是:邻分(分数)背包问题

矩阵相乘:动态规划,时间复杂度O(n3),空间复杂度O(n2)

n位补码的范围:-2的n-1次方到2的n-1次方-1 -128是10000000

对阶:小阶向大阶看齐

40 锁

共享锁(读锁,S锁):若事务T对数据对象A加S锁,其他事务对A可以加S锁,但不能加X锁 排它锁(写锁,X锁):若事务T对数据A加X锁,其他事务对A不能加任何锁

41 OLAP

针对特定问题的联机数据访问和分析,通过多维的方式对数据进行分析查询和报表

大题

1、试题一 (1)分解加工时,需要注意三种错误:黑洞(只有数据输入,没有数据输出)、灰洞(有输入数据流没有数据输出的加工)、奇迹(没有数据输入只有数据输出)

2、试题三 include包含:一个用例包含另一个用例,当基本用例执行时,被包含用例一定执行;基本用例指向被包含用例,关系是一条带虚线的箭头,虚线上写include

extend扩展:基本用例执行时,可能会出现特殊和可选择的情况,这时执行扩展用例,关系是由扩展用例指向基本用例,虚线带箭头,虚线上写extend

generalize泛化:父用例泛化子用例,子用例继承父用例所有的属性和行为,父用例可以出现的地方,子用例都可以将其替换掉

结构化语言

IF(A)THEN{
    IF(B)THEN{
        xxxxxx
        ELSE{
        XXXXX
        }
    }ENDIF
}ELSEIF()THEN{
XXXXXX
}ENDIF
WHILE(接收图像)
DO{
    检测收到的所有图像;
    IF (出现一张图像不合格)
    THEN{
    返回检测结果不合格;
    不合格检测结果=产品型号+不合格类型;
    }ENDIF
}ENDDO

观察者模式:定义了对象之间的一对多依赖关系,主题对象状态发生变化时,所有依赖他的对象会得到通知并自动更新

3、试题6 策略模式 备忘录模式 组合模式