天天看点

软件设计(五)--设计模式

软件设计(四)--MTBF、MTTF、MTTR

41、命令模式:将一个请求封装成一个对象,从而使不同的请求对客户进行参数化。对请求排队或记录请求日志,以及支持撤销的操作。使用于以下情况:

  1. 抽象出待执行的动作以及参数化某对象,此模式是过程语言中的回调(callback)机制的一个面向对象代替方案。
  2. 在不同的时刻指定、排序和执行请求。
  3. 支持取消操作。
  4. 支持修改日志,当系统重做的时候,这些修改可以重做一遍。
  5. 用构建在原语操作上的高层操作构造一个系统。

责任链:使多个对象都有机会处理请求,避免了发送者和接收者之间的耦合关系。将这些对象连接成一条链,并沿着这个传递消息,直到处理为止。

  1. 多个对象可以处理一个请求,哪个对象处理该请求在运行时刻自动确定。
  2. 在不明确接收者的情况下,向多个对象中的一个提交一个请求。
  3. 可处理一个请求的对象集合应被动态指定。

观察者:一对多的关系,暴露一,用户感知在用一个整体,改动一的时候,其他依赖都会改动。

策略:定义一系列算法封装起来,并且使他们可以相互替换。此模式使得算法可以独立于使用他们的客户而变化。

  1. 许多相关的类行为有异。
  2. 需要使用一个算法不同的变体。
  3. 算法使用客户不应该知道的数据,可使用策略模式比避免暴露复杂的、与算法相关的数据结构。
  4. 一个类定义了多种行为。

42、生成器模式:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。

  1. 当创建复杂对象的算法应该独立于该对象的组成部分以及它们装配方式时。
  2. 当构造过程必须允许被构造的对象有不同的表示。

工厂方法:定义一个创建对象的接口,让子类决定实现哪个类实例化,使一个类的实例化延迟到其他子类。

  1. 当一个类不知道它所必须创建的对象的类的时候。
  2. 当一个类由它的子类来指定它所创建对象的时候。
  3. 当类将创建对象的职责委托给多个子类的某一个,并且你希望将哪一个帮助子类是代理对象这一信息局部化的时候。

原型模式:用原型实例创建对象的种类,并且通过拷贝这个原型来创建新的对象。

  1. 当一个系统应该独立于他的产品创建、构建和表示时。
  2. 当要实例化的类是在运行时刻指定时,例如通过动态装载。
  3. 当一个类的实例只能有几个不同状态组合中的一种时,建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便。

单例模式:保证一个类仅有一个实例,并且提供一个访问这个实例的全局访问点。

  1. 当类只能有一个实例。
  2. 当这个唯一实例可以通过子类化可扩展,并且客户应该无须改代码就能使用一个扩展的实例。

43、给定关系R(A,B,C,D)和关系S(A,B,E,F),对其进行自然连接运算R⋈S属性列有哪些?

解析:自然连接去掉左边相同的列,所以是RA、RB、RC、RD、SE、SF 一共6个。

44、设有一个包含n个元素的有序线性表。在等概率情况下删除其中一个元素,若采用顺序存储结构,则平均需要移动多少个元素。若采用单链表存储,则平均需要移动多个元素。

答案:(n-1)/2  和 0

解析:因为有序线性表 当移动第一个元素的时候,需要移动n-1个,当移动最后一个元素的时候,则不需要移动元素,所以除以2就是平均值。

而单链表存储不需要移动元素,修改的是相关指针。

45、3个节点的二叉树有五种形态。

46、关于二叉排序树(或二叉查找树、二叉检索树)的叙述,正确的是 从左到右排列同层次的结点,其关键字呈现有序排列的特点。

二叉树特点:

  1. 若左子树非空,则左子树所有节点小于根节点值。
  2. 若右子树非空,则右子树所有节点大于根节点值。
  3. 左、右子树本身就是二叉查找树。

47、以下协议属于应用层协议的是 SNMP,该协议封装在UDP 中传送。

ARP和ICMP都属于网络层协议。X.25是分组交换网上的协议,也属于网络协议。

48、协议://主机名.域名.域名后缀或IP地址(:端口号)/目录/文件名

wb.xyz.com.cn  的wb则是主机名

49、如果路由器收到了多个路由协议转发的关于某个目标的多条路由,那么决定采用的策略是:比较各个路由的管理距离,选择距离最小的。

50、CPU执行算术运算或者逻辑运算时,常将源操作数和结果暂存在 累加器(AC)中。      

CPU中存在多个寄存器:

程序计数器:保存待读取指令在内存中的地址。

累加器:执行算术运算或者逻辑运算时暂存源操作数和计算结果的寄存器。

指令寄存器:暂存从内存中读取指令。

地址寄存器:暂存访问内存单元的地址。               

继续阅读