以下关于状态(State)模式和策略(Strategy)模式的叙述中,说法错误的是(48)。
A.对于客户程序而言,State模式比Strategy模式更透明
B.Strategy模式用来处理算法变化,State模式用来处理状态变化
C.State模式的对象变化频率比Strategy模式的对象高
D.State模式的“状态”是在对象外部,Strategy模式的“策略”是在对象内部
A.对于客户程序而言,State模式比Strategy模式更透明
B.Strategy模式用来处理算法变化,State模式用来处理状态变化
C.State模式的对象变化频率比Strategy模式的对象高
D.State模式的“状态”是在对象外部,Strategy模式的“策略”是在对象内部
● 下列UML类图表示的是 (46) 设计模式。该设计模式中, (47) 。
(46)
A. 备忘录(Memento)
B. 策略(Strategy)
C. 状态(State)
D. 观察者(Observer)
(47)
A. 一个Subject对象可对应多个Observer对象
B. Subject只能有一个ConcreteSubject子类
C. Observer只能有一个ConcreteObserver子类
D. 一个Subject对象必须至少对应一个Observer对象
A.常用的容灾模式有1+1主备模式、1+1互备模式、N+1主备模式和POOL模式
B.在SBC单机组网下,SBC自身并不能实现地理容灾
C.在AGCF接入组网下,AGCF可以检测主用S/I-CSCF故障;自动将业务从容灾切换至主用S/I-CSCF
D.容灾系统中,故障检测机制主要包括启发式OPTIONS检测和周期性OPTIONS检测
请认真阅读以下关于某传输系统的技术说明、状态转换图及C++代码,根据要求回答问题1和问题2。
【说明】
传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout 3种,事件与其相应的状态转换如图6-18所示。
下面的【C++代码1】与【C++代码2】分别用两种不同的设计思路对传输门进行状态模拟,请填补代码段中的空缺语句。
【C++代码1】
const int CLOSED = 1; const int PENING = 2;
const int PEN = 3; const int CLOSING = 4;
const int STAYOPEN = 5; //定义状态变量,用不同整数表示不同状态
class Door {
private:
private:
int state; //传输门当前状态
void setState(int state) { this->state = stale; } //设置当前状态
public:
Door () :state (CLOSED) { };
void getState() { //根据当前状态输出相应的字符串
switch(state) {
case OPENING: cout <<"OPENING" << endl; break;
case CLOSED: cout << "CLOSED" << endl; break;
case OPEN: cout << "OPEN" << endl; break;
case CLOSING: cout << "CLOSING" << endl; break;
case STAYOPEN: cout << "STAYOPEN" << endl; break;
}
}
void click() { //发生click事件时进行状态转换
if ((1) ) setState(OPENING);
else if ((2) ) setState(CLOSING);
else if ((3) ) setState(STAYOPEN);
}
void timeout() { //发生timeout事件时进行状态转换
if (state == OPEN) setState(CLOSING);
}
void complete() { //发生complete事件时进行状态转换
if (state == OPENING) setState(OPEN);
else if (state == CLOSING) setState(CLOSED);
}
};
int main(){
Door aDoor;
aDoor.getState(); aDoor.click(); aDoor.getState(); aDoor.complete();
aDoor.getState(); aDoor.click(); aDoor.getState(); aDoor.click();
aDoor.getState(); return 0;
}
【C++代码2】
class Door {
public:
DoorState *CLOSED, *OPENING, *OPEN, *CLOSING, *STAYOPEN, *state;
Door();
virtual ~Door() { ... //释放申请的内存,此处代码省略};
void s
【问题1】(6分) 设计模式按照其应用模式可以分为三类:创建型、结构型和行为型,请用200字以内文字说明三者的作用。 【问题2】(9分) 请将项目组已经掌握的设计模式按照其作用分别归类到创建型、结构型和行为型模式中。 【问题3】(10分) 针对题目中所提出的设计要求(1)和(2),项目组应该分别选择何种设计模式?请分别用200字以内文字说明具体的解决方案。
A.单件(Singleton)
B.桥接(Bridge)
C.组合(Composite)
D.状态(State)
(43)
A. 单件(Singleton)
B. 桥接(Bridge)
C. 组合(Composite)
D. 状态(State)
(44)
A. Context
B. concreteStateA
C. Handle
D. State
A.适配器(Adapter)
B.通知(Notifier)
C.状态(State)
D.观察者(Visitor)
A.威努特工业防火墙在白名单策略上支持三种工作模式(学习模式、告警模式、防护模式),那么以下说法正确的是
B.在完成白名单自动学习后应该直接进入防护模式,立即体现设备的防护效果
C.处于学习模式时系统会从访问控制、工业协议、业务工艺三个维度递进构建白名单
D.处于告警模式状态的设备可以切换回学习模式,也可以切换到防护模式
E.告警模式的意义是为了固化和确认学习到的白名单规则,防止白名单不匹配造成业务影响