题海茫茫,答案难觅。请点赞、关注我呦!B站同名up猪https://space.bilibili.com/204913846https://space.bilibili.com/204913846
博客总领目录请看这篇,绝对干货软件工程专业大学四年学什么_大学近代史学分是多少-优快云博客https://blog.youkuaiyun.com/qq_41587612/article/details/104362661期末试题基本出自这些题,请提前复制黏贴到word文档里,方便考试时直接查找,最好考前先浏览一遍。
考试考到但不知道标准答案的题:(如果有会的,麻烦在评论区写出答案,谢谢)
1、代理模式的扩展是()
2、简述状态模式的应用场景和扩展方向。
3、命令模式可以扩展为什么模式?画出其结构图
手速要快快快快快快快快快快快快快快快快快快快快,遇到不会的先跳过
单选题汇总
第一章 软件设计模式体系结构概述
1、以下对开闭原则的描述错误的是(A)。
A.开闭原则与“对可变形的封装原则”没有相似性
B.找到一个系统的可变元素,将它封装起来,叫开闭原则
C.对修改关闭,是其原则之一
D.从抽象层导出一个或多个新的具体类可以改变系统的行为,是其原则之一
2、常用的基本设计模式可分为(A)。
A.创建型、结构型和行为型 B.对象型、结构型和行为型
C.过程型、结构型和行为型 D.抽象型、接口型和实现型
3、对违反里氏替换原则的两个类,可以采用的候选解决方案正确的是(D)。
A.创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题。
B.将B到A的继承关系改成组合关系。
C.区分是“is-a”还是“has-a”。如果是“is-a”,可以使用继承关系,如果是“has-a”应该改成组合关系。
D.尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程。
4、下列属于面向对象基本原则的是(C)。
A.继承 B.封装 C.里氏替换 D.子类复用
5、要依赖于抽象,不要依赖于具体,即针对接口编程,不要针对实现编程,是(D)的表述。
A.开-闭原则 B.接口隔离原则 C.里氏代换原则 D.依赖倒转原则
6、“不要和陌生人说话”是(D)原则的通俗表述。
A.接口隔离 B.里氏代换 C.依赖倒转 D.迪米特
7、Open-Close原则的含义是一个软件实体(A)
A.应当对扩展开放,对修改关闭 B.应当对修改开放,对扩展关闭
C.应当对继承开放,对修改关闭 D.以上都不对
第二章 创建型_简单工厂、工厂方法、抽象工厂
8、以下关于创建型模式说法正确的是(A)。
A:创建型模式关注的是对象的创建 B:创建型模式关注的是功能的实现
C:创建型模式关注的是组织类和对象的常用方法 D:创建型模式关注的是对象间的协作
9、当创建一个具体的对象而不希望制定具体的类时,可以使用(B)模式。
A:结构型 B:创建型 C:行为型 D:复用型
10、当需要在项目中定制自己的元素时,可使用(B)模式来定制。
A:结构型 B:创建型 C:行为型 D:复用型
11、下列关于静态工厂和工厂方法表述错误的是(D)
A.在工厂方法模式中,对于存在继承等级结构的产品树,产品的创建是通过相应等级结构的工厂创建的
B.不能形成静态工厂的继承结构
C.静态工厂对具体产品的创建类别和创建时机的判断是混和在一起的,这点在工厂方法中
D.二者都满足开闭原则:静态工厂以if else方式创建对象,增加需求的时候会修改源代码
12、关于模式适用性,在以下情况不适合使用FACTORY METHOD模式?(C)
A. 当一个类不知道它所必须创建的对象的类的时候
B. 当一个类希望由它的子类来指定它所创建的对象的时候
C. 当你提供一个产品类库,而只想显示它们的接口而不是实现时
D. 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候
13、以下意图哪个是用来描述FACTORY METHOD(工厂方法)?()
A. 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
B. 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作
C. 定义一个用于创建对象的接口,让子类决定实例化哪一个类。该模式使一个类的实例化延迟到其子类
D. 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化
14、以下意图哪个是用来描述ABSTRACT FACTORY(抽象工厂)?(A)
A. 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
B. 定义一个用于创建对象的接口,让子类决定实例化哪一个类
C. 将一个类的接口转换成客户希望的另外一个接口
D. 表示一个作用于某对象结构中的各元素的操作
第三章 创建型_单/多例、建造者、原型
15、(D)可用来描述原型(Prototype)。
A:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
B:表示一个作用于某对象结构中的各元素的操作。它是你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
C:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
D:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。
16、在(C)适合使用单例(Singleton)模式。
A:当一个类不知道它所必须创建的对象的类的时候
B:当一个类的实例只能有几个不同的状态组合中的一种时
C:当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时
D:当一个类希望由它的子类来指定它所创建的对象的时候
17、在(B)不适合使用原型(Prototype)模式。
A:当要实例化的类是在运行时刻指定是,例如通过动态装载
B:当要强调一系列相关的产品对象的设计以便进行联合使用时
C:为了避免创建一个与产品类层次平行的工厂类层次时
D:当一个类的实例只能有几个不同状态组合中的一种时
18、以下意图哪个是用来描述SINGLETON(单例)?(B)
A. 将一个类的接口转换成客户希望的另外一个接口该模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
B. 保证一个类仅有一个实例,并提供一个访问它的全局访问点
C. 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化
D. 用一个中介对象来封装一系列的对象交互
19、以下意图哪个是用来描述BUILDER(生成器)?(B)
A. 定义一个用于创建对象的接口,让子类决定实例化哪一个类
B. 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
C. 保证一个类仅有一个实例,并提供一个访问它的全局访问点
D. 运用共享技术有效地支持大量细粒度的对象
第四章 结构型_适配器
20、用来描述适配器( Adapter)的意图是(A)。
A:将一个类的接口转换成客户希望的另外一个接口,本模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作
B:定义一个用于创建对象的接口,让子类决定实例化哪一个类
C:表示一个作用于某对象结构中的各元素的操作,它使用户可以在不改变各元素的类的前提下定义作用于这些元素的新操作
D:将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作
21、关于模式适用性,不适合使用适配器( Adapter )模式的是(D)。
A:用户想使用一个已经存在的类,而它的接口不符合用户的需求
B:用户想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作
C:用户想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口
D:如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象
第五章 结构型_合成、装饰模式
22、以下哪一项可用来描述装饰(Decorator)(D)。
A:运用共享技术有效地支持大量细粒度的对象
B:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象
C:将抽象部分与它的实现部分分离,使它们都可以独立变化
D:动态地给一个对象添加一些额外的职责
23、装饰(Decorator)模式不能用于下列那个选项(C)。
A:在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
B:处理那些可以撒销的职责
C:客户程序与抽象类的实现部分之间存在着很大的依赖性
D:当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,每种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是类的定义被隐藏,或类定义不能用于生成子类
24、关于模式适用性,以下(B)不适合使用 Composite(组合)模式。
A:用户想使用一个已经存在的类,而它的接口不符合用户的需求
B:用户想表示对象的部分-整体层次结构
C:当一个类的实例只能有几个不同状态组合中的一种时
D:一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为
25、