软件开发----设计模式每日刷题(转载于牛客)

1. 以下哪些问题通过应用设计模式不能够解决()

A 指定对象的接口

B 针对接口编程

C 确定软件的功能都正确实现

D 设计应支持变化

正确答案:C


2. 下面不属于创建型模式的有()

A 抽象工厂模式( Abstract Factory )

B 工厂方法模式(Factory Method)

C 适配器模式 (Adapter)

D 单例模式(Singleton)

正确答案:C

解析:

设计模式分为三种类型:

(1)创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。

(2)结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。

(3)行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。


3. 设计模式一般用来解决什么样的问题()

A 同一问题的不同表相

B 不同问题的同一表相

C 不同问题的不同表相

D 其他都不是

正确答案:A

解析:

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。是用来解决重复利用的解决方案,可以对之后的问题进行简单的修改、降低成本来进行使用,设计模式要为了使设计适应变化,并且要保持流畅、简单和持续性。


4.设计模式在实际程序设计过程中应用很广泛,例如微软著名的MFC框架就广泛的使用了模板模式,而浏览器、office等插件开发基本上都使用了策略模式,下面关于模板模式和策略模式说明错误的是( )。

A 策略模式和模板模式在某些应用场景下可以互换。

B 模板模式使用的是继承关系实现,策略模式使用的是组合关系实现。

C 模板模式倾向于把解决问题过程定义为一个完整框架,把过程中的若干实现步骤延迟到子类中实现。

D 策略模式倾向于把解决问题的算法定义为一个接口,把解决问题的具体过程通过继承的方式封装起来

正确答案:D

解析:

策略模式和模板模式的联系与区别

策略模式和模板模式在某些应用场景下可以互换。

模板模式使用的是继承关系实现,策略模式使用的是组合关系实现。

模板模式倾向于把解决问题过程定义为一个完整框架,把过程中的若干实现步骤延迟到子类中实现。


5. 行为类模式使用( )在类间分派行为。

A 接口

B 继承机制

C 对象组合

D 委托

正确答案:B

解析:

行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足"合成复用原则",所以对象行为模式比类行为模式具有更大的灵活性。


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

A 命令模式

B 桥接

C 单例模式

D 责任链

正确答案:C


7. Open-Close原则的含义是一个软件实体( )

A 应当对扩展开放,对修改关闭.

B 应当对修改开放,对扩展关闭

C 应当对继承开放,对修改关闭

D 其他都不对

正确答案:A

解析:

open-close原则:在不修改源代码情况下即可完成对系统的扩展


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

A 备忘录模式

B 访问者模式

C 模板方法模式

D 责任链

正确答案:A

解析:

备忘录模式(Memento pattern): 当你需要让对象返回之前的状态时(例如, 你的用户请求"撤销"), 你使用备忘录模式

访问者模式(visitor pattern): 当你想要为一个对象的组合增加新的能力, 且封装并不重要时, 就使用访问者模式

模板方法模式(Template pattern): 在一个方法中定义一个算法的骨架, 而将一些步骤延迟到子类中. 模板方法使得子类可以在不改变算法结构的情况下, 重新定义算法中的某些步骤

责任链模式(Chain of responsibility pattern): 通过责任链模式, 你可以为某个请求创建一个对象链. 每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象


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

A 工厂方法模式

B 访问者模式

C 模板方法模式

D 责任链

正确答案:B

解析:

对同一对象结构中的元素的操作方式并不唯一,可能需要提供多种不同的处理方式,还有可能增加新的处理方式。

对象:科研奖、成绩优秀奖

访问者:学生、教师

不同访问者访问对象时有不同的操作方式


10. 下面关于"单例模式"错误的是()

A 它可以保证某个类在程序运行过程中最多只有一个实例,也就是对象实例只占用一份内存资源。

B 使用单例,可以确保其它类只获取类的一份数据。

C 对于一些不需要频繁创建和销毁的对象,单例模式可以提高系统的性能。

D 由于单例模式中没有抽象层,因此单例很难进行类的扩展。

正确答案:C

解析:

单例模式:

对于一些需要频繁创建和销毁的对象,单例模式可以提高系统性能。

只需要创建一个实例即可,无需重复创建,占用系统内存资源。

相关推荐
CodeClimb9 分钟前
【华为OD-E卷-简单的自动曝光 100分(python、java、c++、js、c)】
java·python·华为od
liyinuo201716 分钟前
嵌入式(单片机方向)面试题总结
嵌入式硬件·设计模式·面试·设计规范
风清云淡_A20 分钟前
【java基础系列】实现数字的首位交换算法
java·算法
Gao_xu_sheng22 分钟前
Java程序打包成exe,无Java环境也能运行
java·开发语言
大卫小东(Sheldon)29 分钟前
Java的HTTP接口测试框架Gatling
java
谢家小布柔30 分钟前
java中的继承
java·开发语言
l1384942745137 分钟前
Java每日一题(2)
java·开发语言·游戏
苹果醋339 分钟前
SpringBoot快速入门
java·运维·spring boot·mysql·nginx
WANGWUSAN661 小时前
Python高频写法总结!
java·linux·开发语言·数据库·经验分享·python·编程
Yvemil71 小时前
《开启微服务之旅:Spring Boot 从入门到实践》(一)
java