当前位置: 首页 > news >正文

软件设计模式选择、判断解析-1

前言

解析是我个人的理解,相对来说我觉得是能对上定义的逻辑的 

目录

一.单选题

1.设计模式的两大主题是(  ) 

解析:无

2.下列模式中,属于行为型模式的是()

解析: 排除A和D,剩下的观察者的“观察”才是描述交互行为的

3.以下关于创建型模式说法准确的是( )

解析: 关注功能是行为型模式,组织类和对象是结构型模式,关注对象协作也是行为型模式

4.下列属于面向对象基本原则的是

 解析:记得区分特性和原则

5.关于单一职责原则,以下叙说错误的是( ) 

解析: 单一职责是为了降低类的复杂度,使类的功能更内聚,变更时影响范围更小;而职责过多的类耦合度高,复用需同时满足所有职责的需求,场景限制严格,复用性更低

6.要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( )的表述

 解析:开闭和里氏代换不符合表述,而依赖倒转是指高层模块不依赖低层模块,两者均依赖抽象;接口隔离是指客户端不依赖不需要的接口,使用多个特定接口替代单一复杂接口

7.()将整个软件系统划分为模型、视图和控制器三个部分。

解析:MVC定义 

8.依据设计模式思想,程序开发中应优先使用的是(   )关系实现复用

 解析:对象组合就是指关联组合,组合优于继承的原因在于:前者只实现接口,互不影响,而后者继承父类,父类始终是具体方法的,而这个“具体方法”就是导致耦合度变高的原因。

9.在设计模式的原则中,( )表示使用多个专门的接口比使用单一的总接口要好,一个类对另一个来的依赖性应当是建立在最小的接口上的。

解析:前面刚在解析里面讲到的定义

10.以下不属于结构型模式的是( )

解析: 结构型模式关注处理类或对象的组合

11.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( )模式

解析:涉及到创建对象的过程

12.“不要和陌生人说话” 是(   )原则的通俗表述

 解析:陌生人就是不相关的,其他原则前面提过了,迪米特原则也叫最少知识原则,指一个对象应尽可能少地了解其他对象,降低耦合度。A选项的接口隔离看起来似乎很像(我一开始也以为是A),但是我后面想了一下,“说话”这个词还是指交互的,接口不管隔离不隔离都不存在接口间交互。

13.对于依赖倒转的表述错误的是

解析:依赖倒转的定义我们前面说到了,A是最直接的,B说的语法意义上的接口,这里我想的是因为还有可能是抽象类(不存在任何方法体的抽象类)。而C就是应用了依赖导致后的效果描述

 

14.下面不是MVC优点的是

解析:任何一种模式为了解决问题体现自身的优点都不可避免的要花代价,占用的资源就不可能少,因此,占用资源一定不是MVC的优点

15.下列不是MVC的组成部分的是

解析:V是指视图view

16.下面不属于简单工厂方法模式的角色的是( )。

解析:简单工厂方法是不存在抽象工厂的

17.下面关于简单工厂方法的说法中错误的是()。

解析:简单工厂又叫静态工厂方法,那就自然不能不是静态

18.简单工厂模式中的工厂方法的返回值用()的类型是合适的。

解析:工厂生产的成果是产品,要通用,则是抽象产品

19.下面关于静态工厂方法模式的说法中错误的是()。

解析:静态的代表了唯一,特定的,通常不会派生

20.下面关于工厂方法模式的叙述中错误的是()

解析:工厂方法模式是多工厂,一个工厂指定生产一种产品,这是和简单工厂模式的区别

21.关于工厂方法模式的优缺点说法中正确的是()

解析:每种产品的生产细节分别封装在每个具体工厂内部,一一对应,抽象工厂不做具体生产,每增加一种产品,则要增加一个工厂,新工厂与旧工厂生产的产品不同,他们之间没有关联

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

解析:能够体现唯一的,那么就是单例模式了;注意原型模式在这个地方是不适用的,毕竟你不能让来一个人申请身份证就是复制你的(当然其实把场景缩小是可以说D正确的,很多时候还是要关注题目歧义的)

23.在医院的档案室存有很多的病例档案,病人出院的时候,可以去档案室里面取一份病例复印件,用于商业保险报销等用途。这个过程可以用( )模式来模拟文印室的档案管理流程。

解析:这里就是典型的原型模式场景了

24.( )模式是利用一个对象快速的生成一批对象

解析:突出重用

25.打印池在操作系统中是一个用于管理打印任务的应用程序,通过打印池用户可以删除、中止或者改变打印任务的优先级。我们可以使用(  )来模拟实现打印池的设计。

解析:打印池里边的打印任务是串行处理的,要保证串行,那么就只能一个打印池,要是多个打印池,那么就变成了并行处理,因此最有可能采用的模式是单例模式(保持唯一);这里可能会想到选A,但这里最关键的是打印池的唯一性,假设这里面选项有组合模式就可以考虑了。

26.下列关于简单工厂模式与工厂方法模式表述错误的是() 

解析:简单工厂是不符合开闭的,增加一种产品要修改原有的工厂方法。

27.在单例模式中的下列描述中正确的是()。

解析:单例模式涉及到唯一性,没有就创建,有就返回,所以C、D就排除了,至于构造函数,肯定也是必须私有的,不然就不能控制了

28.长安汽车的不同型号的汽车在不同的工厂生产,如轿车在鱼嘴工厂生产,SUV在渝北工厂生产,该场景蕴含了()模式

解析:工厂与产品 一一对应,这显然是多工厂模式(工厂方法模式)

29.某公司要创建一个公文管理器,在公文管理器中将存放常用的公文模板,用户使用的时候可以通过复制这些公文模板,快速创建新的公文,关于这个公文管理器说法正确的是()。

解析:模板对应原型,可以快速复制利用,模板管理器就对应原型管理器

30.关于原型模式中叙述错误的是()

解析:我们之前说过,浅克隆复制基本类型数据,引用类型仅复制地址,深克隆递归复制所有层级的对象,新实例与原实例完全独立;原型模式需要对所有涉及到的类进行克隆,每个类都需要克隆方法

31.以下( )中可以使用单例模式

解析:单例即唯一对象(唯一实例化),防止实例化多次

32.以下( )不是单例模式的要点

解析:单例模式是保证创建的实例只能有一个,对于是否能被继承并不重要(用protected修饰就可以保证继承了)。

33.以下关于单例模式的描述中,正确的是()

解析:单例=同时只能一个实例存在

34.某公司要开发一款聊天软件,用户在聊天过程中可以与多位好友同时聊天,这将会产生多个聊天窗口。为了提高创建的效率,采用( )进行设计比较合理。

解析:提高复用性

35.在某个画图软件的导入功能设计的时候,需要为不同的图片格式提供一个图片读取器。如gif图片读取器用于读取gif图片,jpg图片读取器用于读取jpg图片。在设计该程序的时候用()模式比较合适。

解析:图片=产品;读取器=工厂。不同工厂对应不同产品

36.某管理系统中,我们发现曲线图创建器用于生成曲线图,柱状图创建器用于生成柱状图。在该系统的设计中,设计人员最可能采取()模式来设计完成了该系统。

解析:跟前面一样

22.在日常的银行业务办理中,为了均衡各个窗口之间排队的压力。在进入银行的时候都要进行取号的操作。该场景中蕴含了()模式。

解析:取号操作中的每个号码都是唯一的,体现了单例模式。而其他选项都没办法体现

二.判断题

 1.Java中的一个类可以继承多个类,实现一个接口。

解析:把继承和实现刚好弄反了

2.抽象类的子类不能是抽象类。

解析:并非不能

3.接口中可以包含实例方法。

 解析:同样是搞混了接口和抽象类

4.实现一个接口的时候,必须全部实现里面的方法。所以在接口定义的时候,要从分考虑接口隔离原则,对接口方法进行设计。

5.MVC中的M和V可以直接通信

解析:M是model,V是view,视图和模型的通信是基于Controller的,C就是处理用户输入,协调 Model 和 View 的交互

6.SSM框架中,被@Service和@Mapper注解的类属于MVC中的M的范畴。

解析:M是model,负责数据逻辑和业务规则,Service就是业务,Mapper就是进行数据库操作

7.MVC中的M主要负责请求的跳转。

解析:请求跳转是C的职责

8.在SSM中为了方便,可以在@Controller标注的类中写大量的业务处理代码。

解析:前面说过了,业务处理是Service的地方

9. MVC全名是Model View Commander,模型(model)-视图(view)-命令器(Commander)的缩写 

10.java方向,MVC的具体实现的经典模型2:JSP+Servlet+JavaBean 中Servlet充当了控制器的角色,JSP作为视图,而JavaBean则充当了模型的角色

解析:区分模型1(JSP即作为视图又作为Controller)即可

11.控制器(Controller):接受用户输入并调用模型和视图去完成用户的需求。在程序中属于“领导的角色”,它的职责是指挥模型和视图做具体的事儿,根据模型和视图做事儿的结果做出下一步行动的决策

12.模型(Model):是应用程序的业务处理层,负责所有业务流程的处理和业务规则的制定。模型就是业务逻辑

解析: 不仅是业务逻辑,还有涉及到数据的持久化等等

13.视图(View):是应用程序的表示层,代表用户交互界面。在Web应用中,交互界面可能是HTML/JSP界面,也有可能是XML界面、Applet界面或其他界面。视图可以理解为用户界面,前台。

 解析: XML也是可以写界面的

14.在登录程序中,登录的servlet是属于控制器。控制器做的事情是调用登录的模型,获得模型执行的结果(登录成功与失败),根据结果做出决策(跳转到成功或者失败的页面)

15.经典的设计模式按照范围可分为创建型、行为型、结构型三大类型。

解析: 区分范围和目的,按范围分只有两类:类模式和对象模式

16.模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案

17.模式的要素有三个:“模式可适用的前提条件”、“在特定条件下要解决的目标问题”、“对目标问题求解过程中各种物理关系的记述” 

解析:前提、目标、过程 

18.设计模式的关键要素有4个:模式名称、问题、解决方案、效果

19.学生和班级之间是组合关系。

解析:组合我们说就是关联关系,但是 学生和班级并不是强行关联,没有班级,学生也是独立的实体,所以应该是聚合关系

20.在三层类图中,出现的“#”的变量或方法表示在package访问范围可访问。

解析:-private +public #protected ~package

21.工厂方式模式中,子类负责定义创建对象的接口,父类则负责生成具体的对象

解析:倒反天罡

22.在工厂方法模式中,对于存在继承等级结构的产品树,产品的创建是通过相应等级结构的工厂创建的。

23.工厂方法模式在定义框架的过程中很常用,这是因为它存在于一个抽象的层次上。

解析:常用就常用在符合开闭

24.饿汉式单例,不会存在线程安全性问题。

解析:比较 懒汉和饿汉式单例的区别发现,饿汉式单例在使用之前就已经创建了唯一实例,在使用时多个线程间不存在创建实例的操作,也就杜绝了线程安全问题

 25.饿汉式单例和懒汉式单例的空间效率是一样的。

解析:饿汉式是先占用空间(不管用不用),懒汉式是使用的时候临时申请空间,不用就不申请

26.若克隆对象是原型对象通过浅克隆创建出来的,那么对原型对象的引用类型的成员变量进行修改,会引起克隆对象的引用类型的成员变量的变化的主要原因是它们都指向了同一个引用类型对象。

解析:浅克隆的每个克隆对象里边的引用变量的值是一样的地址,所有浅克隆的对象的这个引用变量的地址所指向的对象肯定都是一样的(地址没变)

27.简单工厂模式中的工厂类仅有一个实例,并自行实例化后向整个系统提供这个实例。

解析:静态工厂方法(无实例)是更常见的实现方式,此时工厂类不存在 “唯一实例” 的概念

28.在工厂方法模式中可以让一个工厂来创建几个不同类型的关联产品。

解析:不可能

29.工厂方法模式中的抽象产品角色可以由多个抽象类来承担,同样的也需要多个抽象工厂类来承担抽象工厂的角色。

解析:抽象类只会有两个

30.Java中的cloneable接口位于java.lang中,且在Object类中已经实现了。所以每个java类的对象都具备了自我克隆的功能。

解析:Object类的Cloneable接口是一个标记接口,不包含任何方法,仅用于告知 JVM 该类允许调用clone()方法;而同时要继承Cloneable并重写clone才可以自我克隆

31.通过克隆方式创建出来的对象,不能再次克隆出新的对象。

解析:克隆的原型(母体)不局限于初代,克隆后的对象(第二代、第三代……第n代)可以作为原型(母体)进行克隆

32.单例模式:确保一个类有且只有一个实例,并提供一个全局访问点来访问这个唯一实例

解析:不是“有且只有” 是“只有”,懒汉的时候不用就不会有这么个实例

33.在实现单例类的过程中,需要一个私有成员变量,这个变量一般设为静态的。

解析:并非一般,而是必须静态变量

34.与工厂模式相比,原型模式取消了工厂类,但工厂方法并没有消失,而是融入到产品中了。

解析:原型模式中产品与工厂二合一

35.原型模式可以用于文件的“存档”操作,也可以辅助实现“读档”操作

解析:题干符合克隆模式的优点之一:可以使用深克隆的方式保存对象的状态,以便在需要的时候使用,可辅助实现撤销操作

36.在用户买手机的情景中,若不知道手机的具体型号,但知道手机的生产厂家,这种情况适用于工厂方法模式。

解析:用户必须知道工厂(生产厂家)就能使用该模式,必须知道具体产品型号的话,那就是简单工厂模式

37.创建型模式(Creational Pattern)主要用于创建工厂,关注工厂组成结构的一系列模式

解析:创建型模式主要用于创建对象


一.单选题

1.设计模式的两大主题是(  ) 

A.系统的维护与开发

B.对象组合与类的继承

C.系统架构与系统开发

D.系统复用与系统扩展

解析:无

答案:D 

2.下列模式中,属于行为型模式的是()

A.工厂模式

B.观察者

C.适配器

D.以上都是

解析: 排除A和D,剩下的观察者的“观察”才是描述交互行为的

答案:B

3.以下关于创建型模式说法准确的是( )

A.创建型模式关注的是对象的创建

B.创建型模式关注的是功能的实现

C.创建型模式关注的是组织类和对象的常用方法

D.创建型模式关注的是对象间的协作

解析: 关注功能是行为型模式,组织类和对象是结构型模式,关注对象协作也是行为型模式

答案:A

4.下列属于面向对象基本原则的是

A.

继承

B.

里氏代换 

C.

封装

D.

都不是

 解析:记得区分特性和原则

答案:B

5.关于单一职责原则,以下叙说错误的是( ) 

A.

一个类只负责一个功能领域中的相应职责

B.

就一个类而言,应该有且只有一个引起它变化的原因

C.

一个类承担的职责越多,越容易复用,被复用的可能性越大

D.

当一个类承担的职责过多时,需要将职责进行分离。

解析: 单一职责是为了降低类的复杂度,使类的功能更内聚,变更时影响范围更小;而职责过多的类耦合度高,复用需同时满足所有职责的需求,场景限制严格,复用性更低

答案:C

6.要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( )的表述

A.

开-闭原则

B.

依赖倒转原则

C.

接口隔离原则

D.

里氏代换原则

 解析:开闭和里氏代换不符合表述,而依赖倒转是指高层模块不依赖低层模块,两者均依赖抽象;接口隔离是指客户端不依赖不需要的接口,使用多个特定接口替代单一复杂接口

答案:B

7.()将整个软件系统划分为模型、视图和控制器三个部分。

A.

分层模式

B.

管道模式

C.

MVC

D.

架构模式

解析:MVC定义 

答案:C

8.依据设计模式思想,程序开发中应优先使用的是(   )关系实现复用

A.

对象组合

B.

创建

C.

继承

D.

以上都不对

 解析:对象组合就是指关联组合,组合优于继承的原因在于:前者只实现接口,互不影响,而后者继承父类,父类始终是具体方法的,而这个“具体方法”就是导致耦合度变高的原因。

答案:A

9.在设计模式的原则中,( )表示使用多个专门的接口比使用单一的总接口要好,一个类对另一个来的依赖性应当是建立在最小的接口上的。

A.

单一责任原则

B.

接口隔离原则

C.

依赖倒转原则

D.

迪米特原则

解析:前面刚在解析里面讲到的定义

答案: B

10.以下不属于结构型模式的是( )

A.

代理模式

B.

工厂方法模式

C.

适配器模式

D.

享元模式

解析: 结构型模式关注处理类或对象的组合

答案:B

11.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( )模式

A.

结构型

B.

创建型

C.

行为型

D.

以上都可以

解析:涉及到创建对象的过程

答案:B

12.“不要和陌生人说话” 是(   )原则的通俗表述

A.

接口隔离

B.

依赖倒转

C.

迪米特

D.

里氏代换

 解析:陌生人就是不相关的,其他原则前面提过了,迪米特原则也叫最少知识原则,指一个对象应尽可能少地了解其他对象,降低耦合度。A选项的接口隔离看起来似乎很像(我一开始也以为是A),但是我后面想了一下,“说话”这个词还是指交互的,接口不管隔离不隔离都不存在接口间交互。

答案:C

13.对于依赖倒转的表述错误的是

A.

依赖于抽象而不依赖于具体,也就是针对接口编程。

B.

依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。

C.

实现了同一接口的对象,可以在运行期间,顺利地进行替换。而且不必知道所示用的对象是那个实现类的实例。

D.

以上都不对

解析:依赖倒转的定义我们前面说到了,A是最直接的,B说的语法意义上的接口,这里我想的是因为还有可能是抽象类(不存在任何方法体的抽象类)。而C就是应用了依赖导致后的效果描述

答案:D

14.下面不是MVC优点的是

A.

耦合性低

B.

易于维护

C.

重用性高

D.

占用资源少

解析:任何一种模式为了解决问题体现自身的优点都不可避免的要花代价,占用的资源就不可能少,因此,占用资源一定不是MVC的优点

答案:D

15.下列不是MVC的组成部分的是

A.

View

B.

Controller

C.

Vista

D.

Model

解析:V是指视图view

答案:C

16.下面不属于简单工厂方法模式的角色的是( )。

A.

抽象产品

B.

具体产品

C.

抽象工厂

D.

具体工厂

解析:简单工厂方法是不存在抽象工厂的

答案:C

17.下面关于简单工厂方法的说法中错误的是()。

A.

工厂类中的方法可以不是静态的

B.

可以存在多个具体的产品

C.

在具体产品类中要实现抽象产品中的抽象方法

D.

具体产品和抽象产品之间是继承关系

解析:简单工厂又叫静态工厂方法,那就自然不能不是静态

答案:A

18.简单工厂模式中的工厂方法的返回值用()的类型是合适的。

A.

具体产品

B.

抽象产品

C.

设置为void

D.

客户端

解析:工厂生产的成果是产品,要通用,则是抽象产品

答案:B

19.下面关于静态工厂方法模式的说法中错误的是()。

A.

该模式中被创建的实例通常具有共同的父类

B.

该模式中可以对具体的产品进行扩展

C.

该模式的工厂类可以派生出新的子类

D.

该模式的工厂类中集中了所有产品的创建逻辑

解析:静态的代表了唯一,特定的,通常不会派生

答案:C

20.下面关于工厂方法模式的叙述中错误的是()

A.

工厂方法模式中一个工厂可以创建多个相关类型的产品。

B.

这个模式中有两个抽象角色

C.

这个模式中有两个具体角色

D.

工厂生产的产品由具体工厂自己选择。

解析:工厂方法模式是多工厂,一个工厂指定生产一种产品,这是和简单工厂模式的区别

答案:A

21.关于工厂方法模式的优缺点说法中正确的是()

A.

工厂方法模式不符合开闭原则。

B.

当具体产品的数量大量增加时候,不会引起具体工厂数量的增加

C.

在抽象工厂中就可以确定创建具体的产品对象

D.

将创建具体对象的细节完全封装在具体工厂内部

解析:每种产品的生产细节分别封装在每个具体工厂内部,一一对应,抽象工厂不做具体生产,每增加一种产品,则要增加一个工厂,新工厂与旧工厂生产的产品不同,他们之间没有关联

答案:D

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

A.

简单工厂

B.

工厂方法

C.

单例模式

D.

原型模式

解析:能够体现唯一的,那么就是单例模式了;注意原型模式在这个地方是不适用的,毕竟你不能让来一个人申请身份证就是复制你的(当然其实把场景缩小是可以说D正确的,很多时候还是要关注题目歧义的)

答案:C

23.在医院的档案室存有很多的病例档案,病人出院的时候,可以去档案室里面取一份病例复印件,用于商业保险报销等用途。这个过程可以用( )模式来模拟文印室的档案管理流程。

A.

工厂方法模式

B.

抽象工厂模式

C.

单例模式

D.

原型模式

解析:这里就是典型的原型模式场景了

答案:D

24.( )模式是利用一个对象快速的生成一批对象

A.

单例

B.

抽象工厂

C.

建造者

D.

原型

解析:突出重用

答案:D

25.打印池在操作系统中是一个用于管理打印任务的应用程序,通过打印池用户可以删除、中止或者改变打印任务的优先级。我们可以使用(  )来模拟实现打印池的设计。

A.

命令模式

B.

原型模式

C.

工厂方法模式

D.

单例模式

解析:打印池里边的打印任务是串行处理的,要保证串行,那么就只能一个打印池,要是多个打印池,那么就变成了并行处理,因此最有可能采用的模式是单例模式(保持唯一);这里可能会想到选A,但这里最关键的是打印池的唯一性,假设这里面选项有组合模式就可以考虑了。

 答案:D

26.下列关于简单工厂模式与工厂方法模式表述错误的是() 

A.

两者都满足开闭原则:简单工厂以if else 方式创建对象,增加需求看看 时候会修改源代码

B.

简单工厂对具体产品的创建类别和创建时机的判断是混合在一起的,这点在工厂方法模式中已经克服中已经克服。

C.

不能形成简单工厂的继承结构

D.

在工厂方法模式中,对于存在继承等级结构的产品树,产品的创建是通过相应等级结构的工厂创建的

解析:简单工厂是不符合开闭的,增加一种产品要修改原有的工厂方法。

答案:A

27.在单例模式中的下列描述中正确的是()。

A.

类本身要提供一个静态工厂方法,用于返回单例对象的引用。

B.

它有一个公共的构造函数

C.

它可以用new创建一个新的实体对象。

D.

它的内部不需要定义一个静态的自身类型的属性。

解析:单例模式涉及到唯一性,没有就创建,有就返回,所以C、D就排除了,至于构造函数,肯定也是必须私有的,不然就不能控制了

答案:A

28.长安汽车的不同型号的汽车在不同的工厂生产,如轿车在鱼嘴工厂生产,SUV在渝北工厂生产,该场景蕴含了()模式

A.

简单工厂方法

B.

抽象工厂模式

C.

克隆模式

D.

工厂方法模式

解析:工厂与产品 一一对应,这显然是多工厂模式(工厂方法模式)

答案:D

29.某公司要创建一个公文管理器,在公文管理器中将存放常用的公文模板,用户使用的时候可以通过复制这些公文模板,快速创建新的公文,关于这个公文管理器说法正确的是()。

A.

它是工厂方法模式中的具体产品的集合。

B.

它是简单工厂中的具体产品的集合。

C.

它是原型模式中的原型管理器。

D.

它是抽象工厂模式中的具体产品的集合

解析:模板对应原型,可以快速复制利用,模板管理器就对应原型管理器

答案:C

30.关于原型模式中叙述错误的是()

A.

在浅克隆中不复制对象的引用对象。

B.

在深克隆中的引用对象是相对独立的。

C.

原型模式中不需要为每一个类配备一个克隆方法,因此对于已有的类的改造也较为容易。

D.

抽象原型角色中可以实现Cloneable接口。

解析:我们之前说过,浅克隆复制基本类型数据,引用类型仅复制地址,深克隆递归复制所有层级的对象,新实例与原实例完全独立;原型模式需要对所有涉及到的类进行克隆,每个类都需要克隆方法

答案:C

31.以下( )中可以使用单例模式

A.

隔离菜单项对象的创建和使用

B.

防止一个资源管理器窗口被实例化多次

C.

使用一个已有查找算法而不想修改既有代码。

D.

不能创建子类,需要扩展一个数据过滤类

解析:单例即唯一对象(唯一实例化),防止实例化多次

答案:B

32.以下( )不是单例模式的要点

A.

某个类只能有一个实例

B.

单例不能被继承

C.

必须自行创建单个实例

D.

必须自行向整个系统提供单个实例

解析:单例模式是保证创建的实例只能有一个,对于是否能被继承并不重要(用protected修饰就可以保证继承了)。

答案:B

33.以下关于单例模式的描述中,正确的是()

A.

它描述了只有一个方法的类的集合

B.

它能够保证一个类只产生一个唯一的实例

C.

它描述了只有一个属性的类的集合

D.

它能够保证一个类的方法只能被一个唯一的类调用。

解析:单例=同时只能一个实例存在

答案:B

34.某公司要开发一款聊天软件,用户在聊天过程中可以与多位好友同时聊天,这将会产生多个聊天窗口。为了提高创建的效率,采用( )进行设计比较合理。

A.

抽象工厂模式

B.

简单工程模式

C.

原型模式

D.

工厂方法模式

解析:提高复用性

答案:C

35.在某个画图软件的导入功能设计的时候,需要为不同的图片格式提供一个图片读取器。如gif图片读取器用于读取gif图片,jpg图片读取器用于读取jpg图片。在设计该程序的时候用()模式比较合适。

A.

抽象工厂

B.

工厂方法

C.

建造者

D.

原型模式

解析:图片=产品;读取器=工厂。不同工厂对应不同产品

答案:B

36.某管理系统中,我们发现曲线图创建器用于生成曲线图,柱状图创建器用于生成柱状图。在该系统的设计中,设计人员最可能采取()模式来设计完成了该系统。

A.

简单工厂

B.

桥接

C.

工厂方法

D.

原型模式

解析:跟前面一样

答案:C

22.在日常的银行业务办理中,为了均衡各个窗口之间排队的压力。在进入银行的时候都要进行取号的操作。该场景中蕴含了()模式。

A.

单例模式

B.

原型模式

C.

工厂方法模式

D.

简单工厂模式

解析:取号操作中的每个号码都是唯一的,体现了单例模式。而其他选项都没办法体现

答案:C

二.判断题

 1.Java中的一个类可以继承多个类,实现一个接口。

解析:把继承和实现刚好弄反了

答案:错

2.抽象类的子类不能是抽象类。

解析:并非不能

答案:错

3.接口中可以包含实例方法。

 解析:同样是搞混了接口和抽象类

答案:错

4.实现一个接口的时候,必须全部实现里面的方法。所以在接口定义的时候,要从分考虑接口隔离原则,对接口方法进行设计。

答案:对

5.MVC中的M和V可以直接通信

解析:M是model,V是view,视图和模型的通信是基于Controller的,C就是处理用户输入,协调 Model 和 View 的交互

答案:错

6.SSM框架中,被@Service和@Mapper注解的类属于MVC中的M的范畴。

解析:M是model,负责数据逻辑和业务规则,Service就是业务,Mapper就是进行数据库操作

答案:对

7.MVC中的M主要负责请求的跳转。

解析:请求跳转是C的职责

答案:错

8.在SSM中为了方便,可以在@Controller标注的类中写大量的业务处理代码。

解析:前面说过了,业务处理是Service的地方

答案:错

9. MVC全名是Model View Commander,模型(model)-视图(view)-命令器(Commander)的缩写 

答案:错

10.java方向,MVC的具体实现的经典模型2:JSP+Servlet+JavaBean 中Servlet充当了控制器的角色,JSP作为视图,而JavaBean则充当了模型的角色

解析:区分模型1(JSP即作为视图又作为Controller)即可

答案:对

11.控制器(Controller):接受用户输入并调用模型和视图去完成用户的需求。在程序中属于“领导的角色”,它的职责是指挥模型和视图做具体的事儿,根据模型和视图做事儿的结果做出下一步行动的决策

答案:对

12.模型(Model):是应用程序的业务处理层,负责所有业务流程的处理和业务规则的制定。模型就是业务逻辑

解析: 不仅是业务逻辑,还有涉及到数据的持久化等等

答案:错

13.视图(View):是应用程序的表示层,代表用户交互界面。在Web应用中,交互界面可能是HTML/JSP界面,也有可能是XML界面、Applet界面或其他界面。视图可以理解为用户界面,前台。

 解析: XML也是可以写界面的

答案:对

14.在登录程序中,登录的servlet是属于控制器。控制器做的事情是调用登录的模型,获得模型执行的结果(登录成功与失败),根据结果做出决策(跳转到成功或者失败的页面)

答案:对

15.经典的设计模式按照范围可分为创建型、行为型、结构型三大类型。

解析: 区分范围和目的,按范围分只有两类:类模式和对象模式

答案:错

16.模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案

答案:对

17.模式的要素有三个:“模式可适用的前提条件”、“在特定条件下要解决的目标问题”、“对目标问题求解过程中各种物理关系的记述” 

解析:前提、目标、过程 

答案:对

18.设计模式的关键要素有4个:模式名称、问题、解决方案、效果

答案:对

19.学生和班级之间是组合关系。

解析:组合我们说就是关联关系,但是 学生和班级并不是强行关联,没有班级,学生也是独立的实体,所以应该是聚合关系

答案:错

20.在三层类图中,出现的“#”的变量或方法表示在package访问范围可访问。

解析:-private +public #protected ~package

答案:错

21.工厂方式模式中,子类负责定义创建对象的接口,父类则负责生成具体的对象

解析:倒反天罡

答案:错

22.在工厂方法模式中,对于存在继承等级结构的产品树,产品的创建是通过相应等级结构的工厂创建的。

答案:对

23.工厂方法模式在定义框架的过程中很常用,这是因为它存在于一个抽象的层次上。

解析:常用就常用在符合开闭

答案:对

24.饿汉式单例,不会存在线程安全性问题。

解析:比较 懒汉和饿汉式单例的区别发现,饿汉式单例在使用之前就已经创建了唯一实例,在使用时多个线程间不存在创建实例的操作,也就杜绝了线程安全问题

答案:对

 25.饿汉式单例和懒汉式单例的空间效率是一样的。

解析:饿汉式是先占用空间(不管用不用),懒汉式是使用的时候临时申请空间,不用就不申请

答案:错

26.若克隆对象是原型对象通过浅克隆创建出来的,那么对原型对象的引用类型的成员变量进行修改,会引起克隆对象的引用类型的成员变量的变化的主要原因是它们都指向了同一个引用类型对象。

解析:浅克隆的每个克隆对象里边的引用变量的值是一样的地址,所有浅克隆的对象的这个引用变量的地址所指向的对象肯定都是一样的(地址没变)

答案:对

27.简单工厂模式中的工厂类仅有一个实例,并自行实例化后向整个系统提供这个实例。

解析:静态工厂方法(无实例)是更常见的实现方式,此时工厂类不存在 “唯一实例” 的概念

答案:对

28.在工厂方法模式中可以让一个工厂来创建几个不同类型的关联产品。

解析:不可能

答案:错

29.工厂方法模式中的抽象产品角色可以由多个抽象类来承担,同样的也需要多个抽象工厂类来承担抽象工厂的角色。

解析:抽象类只会有两个

答案:错

30.Java中的cloneable接口位于java.lang中,且在Object类中已经实现了。所以每个java类的对象都具备了自我克隆的功能。

解析:Object类的Cloneable接口是一个标记接口,不包含任何方法,仅用于告知 JVM 该类允许调用clone()方法;而同时要继承Cloneable并重写clone才可以自我克隆

答案:错

31.通过克隆方式创建出来的对象,不能再次克隆出新的对象。

解析:克隆的原型(母体)不局限于初代,克隆后的对象(第二代、第三代……第n代)可以作为原型(母体)进行克隆

答案:错

32.单例模式:确保一个类有且只有一个实例,并提供一个全局访问点来访问这个唯一实例

解析:不是“有且只有” 是“只有”,懒汉的时候不用就不会有这么个实例

答案:错

33.在实现单例类的过程中,需要一个私有成员变量,这个变量一般设为静态的。

解析:并非一般,而是必须静态变量

答案:错

34.与工厂模式相比,原型模式取消了工厂类,但工厂方法并没有消失,而是融入到产品中了。

解析:原型模式中产品与工厂二合一

答案:对

35.原型模式可以用于文件的“存档”操作,也可以辅助实现“读档”操作

解析:题干符合克隆模式的优点之一:可以使用深克隆的方式保存对象的状态,以便在需要的时候使用,可辅助实现撤销操作

答案:对

36.在用户买手机的情景中,若不知道手机的具体型号,但知道手机的生产厂家,这种情况适用于工厂方法模式。

解析:用户必须知道工厂(生产厂家)就能使用该模式,必须知道具体产品型号的话,那就是简单工厂模式

答案:对

37.创建型模式(Creational Pattern)主要用于创建工厂,关注工厂组成结构的一系列模式

解析:创建型模式主要用于创建对象

答案:错

http://www.lryc.cn/news/574762.html

相关文章:

  • 快速sincos算法,stm32测试
  • 用Rust写平衡三进制加法器
  • 【unitrix】 4.3 左移运算(<<)的实现(shl.rs)
  • 【WCF】单例模式的线程安全缓存管理器实现,给你的WebApi加入缓存吧
  • MyBatis Plus与P6Spy日志配置
  • leetcode230-二叉搜索树中第K小的元素
  • 【计算机网络】期末复习
  • 【教学类-89-08】20250624新年篇05——元宵节灯笼2CM黏贴边(倒置和正立数字 )
  • STM32学习笔记——中断控制
  • (C++)标准模板库(STL)相关介绍(C++教程)
  • C语言专题——关键字详解
  • 前端后端文件下载防抖实现方案
  • 浅谈开源在线客服系统与 APP 集成的技术方案与优劣势
  • 华为云Flexus+DeepSeek征文 | 基于华为云的 Dify-LLM 企业级 AI 开发平台部署指南
  • React Hooks详解
  • 开源跨平台的轻量 C# 编辑器
  • 想考华为HCIA-AI,应该怎么入门?
  • 第五课:大白话教你用K邻近算法做分类和回归
  • (三十六)深度解析领域特定语言(DSL)第七章——语法制导翻译——案例语义模型
  • 10-Python模块详解
  • wpa_supplicant连接到了路由,但是 udhcpc会分配到不同网段的ip,路由器ip为192.168.0网段,板子分配ip为192.168.1的网段
  • 美团小程序闪购 mtgsig1.2
  • Vue的学习内容和目标
  • OSS迁移实战:从自建MinIO到阿里云OSS的完整数据迁移方案
  • Rust 项目实战:多线程 Web 服务器
  • Lombok注解 - 提高Java开发效率
  • order、sort、distribute和cluster by(Spark/Hive)
  • 开篇:4周的时间设计并开发一个个性化具备专业知识的东方命理师AI agent!
  • 【JavaEE】(5) 网络原理的基础认识
  • spring-security-oauth2系列:授权码授权模式