跳至主要內容

设计模式

LincZero大约 7 分钟

设计模式

大话设计模式-职责链模式

https://localhost.blog.csdn.net/article/details/90202435

大话设计模式-系列文章(共50篇):

https://blog.csdn.net/qq_41113081/category_8723350.html

错题

以下哪个模式可以利用一个对象,快速地生成一批对象?()
抽象工厂模式
单例模式
原型模式.
简单工厂模式

答案C。我选D,看错题了,是利用对象生成对象而不是利用类生成对象

(傻逼题)

通过电视机遥控器可以实现对电视机频道进行选择,其实选择电视机频道就是对存放频道的集合进行遍历操作。所以可以使用( )模拟电视机遥控器的实现

命令模式
观察者模式
迭代器模式
单例模式

正确答案:C,你的答案:A/B。

重点是对集合进行遍历操作,遍历操作,遍历操作。

迭代器模式使用场景:

1、访问聚合对象的内容不需要暴露其内部表示。2、需要为聚合对象提供多种遍历方式。3、为了遍历不同的聚合结构对象提供统一的接口。

感觉有点low,评论争议比较大

访问者模式

某高校奖励审批系统可以实现教师奖励和学生奖励的审批(AwardCheck),如果教师发表论文数超过10篇或者学生论文超过2篇可以评选科研奖,如果教师教学反馈分大于等于90分或者学生平均成绩大于等于90分可以评选成绩优秀奖。奖励审批系统可以使用()设计该系统,以判断候选人集合中的教师或学生是否符合某种获奖要求。
 
工厂方法模式
访问者模式
模板方法模式
责任链

正确答案:B,你的答案:D

学生和老师是两个不同的访问者

访问者模式是将数据结构与对数据的操作分离开来,适用于数据结构稳定,但数据操作多变的系统,题中对于获取成绩优秀奖的数据结构是稳定的,但访问者有多个,比如学生,老师,所以适用访问者设计模式

访问者模式实际上就是把数据和对数据的访问解耦,数据的存储是一致的:论文发表数和分数,对数据的访问方式(是否获奖)却不同,因此使用访问者模式。

几种工厂模式

下面的选项中哪些属于工厂模式()
A
静态工厂模式
B
工厂方法模式
C
抽象工厂模式
D
简单工厂模式

正确答案:BCD,你的答案:ABCD。为什么静态工厂模式不算?

工厂模式可理解为:当客户获取产品时,工厂模式作为获取产品的接口。

1、简单工厂模式:由接口直接负责获取产品

2、工厂方法模式:客户必须清楚地指出想获取哪种产品;由接口的子类负责获取产品

3、抽象工厂模式:客户不知道其想获取哪种产品;由接口中判断调用哪个子类,通过子类获取产品。

不确定

现在大多数软件都有撤销(Undo)的功能,快捷键一般都是Ctrl+Z。这些软件可能使用了()模式来进行。

备忘录模式
访问者模式
模板方法模式
责任链

A

购物车设计:顾客在超市中将选择的商品,如苹果、图书等放在购物车中,然后到收银员处付款。在购物过程中,顾客需要对这些商品进行访问,以便确认这些商品的质量,之后收银员计算价格时也需要访问购物车内顾客所选择的商品。购物车设计可以使用()来设计该购物过程。
A
工厂方法模式
B
访问者模式
C
模板方法模式
D
责任链

我B

如果让你来实现前端的MVVM框架,View层需要支持不同终端的不同交互,下面哪些设计模式不太适合用来实现这个需求()
单例模式
观察者模式
适配器模式
代理模式

A

在现实生活中,居民身份证号码具有唯一性,居民可以申请身份证号码或补办身份证号码(还是使用原来的身份证号码,不会产生新的号码)。我们可以使用()来模拟实现居民身份证号码办理。

命令模式
桥接
单例模式
责任链

都不像的样子……C。评论都说这题很抽象

不会

打印池

打印池在操作系统中是一个用于管理打印任务的应用程序,通过打印池用户可以删除、中止或者改变打印任务的优先级。我们可以使用()来模拟实现打印池的设计
A
命令模式
B
桥接
C
责任链
D
单例模式

结果居然是D

一个系统只允许存在一个打印池对象,打印池是管理多台打印机的作用,看到池就想享元是不对的

外观模式

下列描述中,哪些是外观模式的特点( ),多选

A
对客户端屏蔽了子系统组件
B
实现了子系统与客户端之间的紧耦合关系
C
单个子系统的修改不影响其他子系统
D
子系统类变化时,只需要修改外观类即可

ACD,蒙对了

以下关于外观模式的叙述中正确是(      )
A
外观模式符合单一职责原则
B
在外观模式中,一个子系统的外部与内部通信通过统一的外观对象进行
C
在外观模式中,客户类只需要直接与外观对象进行交互
D
外观模式是迪米特法则的一种具体实现

BCD蒙对了,不过D是什么东西

迪米特法则:最小知识原则,一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

假设一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。通过该电源总开关可以同时控制上述所有电器设备,可以使用() 来模拟设计该系统。
A
外观模式
B
观察者模式
C
迭代器模式
D
单例模式

正确答案:A,你的答案:C

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个可以访问系统的接口。

电源总开关是四盏灯、一个风扇、一台空调和一台电视机的外观。有了外观以后,启动和关闭这些电器设备都简化了。

直接 new 一个总开关。

在 new 总开关的同时把灯、风扇、空调和电视机都初始化好并且接好线。

对外暴露方法(打开总开关,关闭总开关)。

打开总开关(按一下开关键):打开灯、风扇、空调和电视机

关闭总开关(按一下开关键):关闭灯、风扇、空调和电视机

解释器模式

责任链

解释器重在解释; 装饰器重在扩展; 桥联重在连接不同的东西; 责任链重在传递请求,这个Handler传到ConcreteHandler能明显看出是责任链了;

怪题

 策略模式的结构中包括三种角色上下文、具体策略和抽象策略。抽象策略角色是一个( )
A
类
B
抽象类
C
接口
D
子类

正确答案:C,你的答案:B

这个题目有点问题。抽象策略角色,在C++中是抽象类,在Java中是接口

复习

 某网络的IP地址空间为192.168.5.0/24,采用定长子网划分,子网掩码为255.255.255.248,则该网络中的最大子网个数、每个子网内的最大可分配地址个数分别是()。
A
32,8
B
32,6
C
8,32
D
8,30

B。主机需去掉全0和全1