设计模式选择题复习

article/2025/11/6 9:51:29

1.在UML提供的图中,( )用于描述系统与外部系统及用户之间的交互

A.用例图
B.类图
C.对象图
D.部署图

2.在UML提供的图中,( )用于按时间顺序描述对象之间的交互。

A、对象图
B、状态图
C、活动图
D、时序图

3.以下关于类成员的可见性叙述错误的是( )

A、可见性为public时,类内和类外可以使用

B、可见性为protected时,类内及子类可以使用

C、可见性为private时,类内及类外皆不可以使用

D、可见性为public或protected时,子类皆可以使用

4.对于如图所示的UML类图,正确的描述是( )

在这里插入图片描述

A、类B的实例中包含了对类C的实例的引用

B、类A的实例中包含了对类B的实例的引用

C、类A的实例中包含了对类C的实例的引用

D、类B的实例中包含了对类A的实例的引用

5.UML中关联的多重度是指( )

A、一个类有多少个方法被另一个类调用

B、一个类的实例能够与另一个类的多少个实例相关联

C、一个类的某个方法被另一个类调用的次数

D、两个类所具有的相同的方法和属性

6. ( )表示了对象间is-a的关系。

A、组合
B、引用
C、聚合
D、继承

7.当采用标准UML构建系统类模型(Class Model)时,若类B除具有类A的全部特性外,类B还可以定义新的特性以及置换类A的部分特性,那么类B与类A具有( )关系;

A、聚合
B、泛化
C、传递
D、迭代

8.若类A的对象维持类B对象的引用或指针,并可与类C的对象共享相同的类B的对象,那么类A与类B具有( )关系。

A、聚合
B、泛化
C、传递
D、迭代

9.在UML类图中,( )关系表明类之间的相关联系最强。

A、聚合
B、组合
C、继承
D、关联

10.关于单一职责原则,以下说法错误的是( )。

A、 一个类只负责一个功能领域中的相应职责。
B、 就一个类而言,应该有且仅有一个引起它变化的原因。
C、 一个类承担的职责越多,越容易复用,被复用的可能性越大。
D、一个类承担的额职责过多时需要将职责分离,将不同的职责封装在不同的类

11.实现开闭原则的关键在于( )。

A、分离类的职责
B、对系统进行抽象化
C、一个类尽可能少地与其他类发生相互作用
D、多用关联关系,少用继承关系

12.某系统通过使用配置文件,可以在不修改源代码的情况下更换数据库驱动程序,该系统满足( )。

A、里氏替换原则
B、接口隔离原则
C、单一职责原则
D、开闭原则

13.已知ClassA是ClassB的父类,在ClassC中定义了ClassA类型的对象obj,且提供了方法setClassA(ClassA obj)用于给obj对象赋值,以下叙述错误的是( )。

A、可以在setClassA()方法中传递一个ClassB类型的对象
B、如果在类ClassA中定义了方法method1(),在类ClassB中覆盖了该方法,当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中调用obj的method1()方法时将执行ClassB的method1()的方法。
C、可以在ClassC中定义一个新的方法setClassA(ClassB obj),他与原有方法setClassA(ClassA obj)构成一组重载方法
D、如果在ClassB中定义了ClassA没有的新方法method2(),当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中可以调用obj对象的method2()方法。

14.下面关于面向对象设计的描述正确的是( )。

A、针对接口编程,而不是针对实现编程
B、针对实现编程,而不是针对接口编程
C、 接口与实现不可分割
D、优先使用继承而非组合

15.以下关于面向对象设计的叙述中,错误的是( )。

A、高层模块不应该依赖于底层模块
B、抽象不应该依赖于细节
C、细节可以依赖于抽象
D、高层模块无法不依赖于底层模块

16.关于继承复用和合成复用,以下叙述错误的是( )。

A、继承复用实现简单,子类可以继承父类的部分方法和属性,并且可以选择性覆盖父类的方法。
B、继承复用会破坏系统的封装性,会将基类的实现细节暴露给子类。
C、合成复用将已有对象纳入新对象中,使之成为新对象的一部分,新对象可以调用已有对象的方法,从而实现行为的复用。
D、合成复用又称为“白箱”复用,与继承复用相比,其耦合度更高,成员对象的变化对容器对象影响更大而且合成复用不能再横线运行时动态实现。

17.如果一个方法能够接受一个基类对象作为参数,必然可以接受一个子类对象。该陈述是( )的定义。

A、依赖倒转原则
B、里氏替换原则
C、合成复用原则
D、接口隔离原则

18.在某MIS系统设计中,提供了一个专门用于连接数据库的类DBConnection,该类包含了用于连接数据库的方法,系统提供DAO(数据库访问对象)类赋值对数据库进行增删改查等挫折,在操作数据库之前需要先连接数据库,因此需要重用DBConnection中的连接方法。为了确保系统具有良好的可扩展性和可维护性,类DBConnection和DAO 之间的关系以( )最为合适。

A、关联关系
B、 依赖关系
C、继承关系
D、实现关系

19.关于接口隔离原则,以下叙述错误的是( )。

A、 在系统设计时,客户端不应该依赖那些它需要的接口。
B、 当一个接口太大时,需要将它分割成一些更细小的接口,使用该接口的客户端类仅需指导与之相关的方法即可。
C、
接口应该尽量细化,同时接口中的方法应该尽可能少,理想情况是在每个接口中只定义一个方法,该接口使用起来最为方便。
D、
一个接口只代表一个角色,每个角色都有它特定的一个接口。

20. 在系统设计中应用迪米特法则,以下叙述错误的是( )。

A、在类的划分上,应该尽量创建松耦合的类,类的耦合度越低,复用越容易。
B、 如果两个类之间不必彼此通信,那么这两个类就不应当发生直接的相互作用
C、 在对其它类的引用上,一个对象对其他对象的引用应当降到最低。
D、在类的设计上,只要有可能,一个类型应该尽量设计成抽象类或接口,且成员变量和成员函数的访问权限最好设置为公开的(public)。

21.一个软件实体应当尽可能少地与其他软件实体发生相互作用,这样,当一个模块修改时,就会尽量少地影响其他模块,扩展会相对容易。这是( )的定义。

A、迪米特法则
B、 接口隔离原则
C、里氏替换原则
D、合成复用原则

22.( )不是迪米特法则的重构方案实例。

A、为了防止界面组件之间产生复杂的引用关系,提供一个中央控制器来赋值控制界面组件间的相互引用。
B、由于不能直接访问一个远程对象,在本地创建一个远程对象的代理,通过代理对象间接访问远程对象。
C、为了降低多层系统的耦合性,提高类的可扩展性和复用性,在界面表示层和业务逻辑层之间增加控制层,由控制层来转发表示层对业务逻辑层的调用。
D、为了提高可扩展性,在系统中增加抽象业务逻辑层,客户类针对抽象业务逻辑层编程,而将具体的业务逻辑类类名存储在配置文件中。

23.面向对象分析与设计中( )是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的;而( )是指子类应当可以替换父类并出现在父类能够出现的任何地方。

A、开闭原则
B、里氏替换原则
C、依赖倒转原则
D、单一职责原则

24.在面向对象软件开发过程中,采用设计模式( )。

A、允许在非面向对象程序设计语言中使用面向对象的概念。
B、依附用成功的设计和体系结构。
C、以减少设计过程创建的实例对象的个数
D、以保证程序的运行速度达到最优值

25.设计模式具有( )的优点。

A、适应需求变化
B、程序易于理解
C、减少开发过程中的代码开发工作量
D、简化软件系统的设计

26.在进行面向对象设计时,采用设计模式能够( )。

A、复用相似问题的相同解决方案
B、改善带的平台可移植性
C、改善代码的可理解性
D、增强软件的已安装性

27.以下关于简单工厂模式的叙述错误的是( )。

A、简单工厂模式可以根据参数的不同返回不同的类的实例
B、 简单工厂模式专门定义一个类赋值创建其他类的实例,被创建的实例通常都具有共同的父类
C、简单工厂模式可以减少系统的格式,简化系统的设计,使得系统更易于理解。
D、系统的扩展困难,一旦添加新的产品就不得不修改工厂逻辑,违背开闭原则。

28. 在简单工厂模式中,如果需要增加新的具体产品,必须修改( )的源代码。

A、抽象产品类
B、其他具体产品类
C、工厂类
D、客户类

29.关于Java语言实现简单工厂模式中的静态工厂方法,以下叙述错误的是( )。

A、工厂子类可以继承父类非私有的静态方法
B、工厂子类可以覆盖父类的静态方法
C、工厂子类的静态工厂方法可以在运行时覆盖由工厂父类声明的工厂对象的静态工厂方法
D、静态工厂方法支持重载

30.以下关于工厂方法模式的叙述错误的是( )。

A、在工厂方法模式中引入了抽象工厂类,二具体产品的创建延迟到具体工厂中实现
B、工厂方法模式添加新的产品对象很容易,无需对原有系统进行修改,符合开闭原则
C、工厂方法模式存在的问题是在添加新产品时,需要编写新的具体产品类,而且还要提供与之对应的具体工厂类,随着类个数的增加,会给系统带来一些额外开销。
D、工厂方法模式是所有形式的工厂模式最为抽象和具有一般性的一种形态,工厂方法模式退化后可以演变成抽象工厂模式

31.某银行系统采用工厂模式描述其不同账户之间的关系,设计出的类图如7-2所示。其中与工厂模式的“Creator”介绍相对应的类是( );与“Product”角色相对应的类是( )。

A、Bank
B、Account
C、Checking
D、Savings

32.以下选项中,( )可以作为工厂方法模式的应用实例。

A、曲线图创建器生成曲线器,柱状图创建器生成柱状图。
B、通过复制已有邮件对象创建新的邮件对象
C、在网络上传输大图片时,先传输对应的文字描述,再传输真实的图片
D、在多个界面组件类之间添加一个控制类来协调它们之间的相互调用关系。

33.下图是( )模式的结构图

在这里插入图片描述
A、Abstract Factory
B、Factory Method
C、Command
D、Chain of Responsibility

34.以下代码使用了( )模式

A、Simple Factory
B、Factory Method
C、Abstract Factory
D、未使用任何设计模式

35.不同品牌的手机应该有不同的公司制造,三星公司生产三星手机,苹果公司生产苹果手机。该场景蕴含了( )设计模式。

A、Simple Factory
B、Factory Method
C、Abstract Factory
D、Builder

36.以下关于抽象工厂模式的叙述错误的是( )。

A、抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
B、当系统中有多于一个产品族时可以考虑使用简单工厂模式
C、当一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象时,抽象工厂模式比工厂方法模式更为简单、有效率
D、抽象工厂模式符合开闭原则,增加新的产品族和新的产品等级结构都很方便

37.关于简单工厂模式,工厂方法模式和抽象工厂模式的比较,以下叙述有误的一项是( )。

A、简单工厂模式和工厂方法模式对应一个产品等级结构,而抽象工厂模式对应多个产品等级结构
B、3种工厂模式都隔离了产品的创建和使用,客户端类只需要使用产品,而将产品的创建过程交由工厂类来完成
C、3种工厂模式都提供了抽象产品角色,在工厂方法模式和抽象工厂模式张红还提供了抽象工厂角色,但简单工厂模式未提供抽象工厂类
D、在增加新的产品时,简单工厂模式违背了开闭原则,工厂方法模式和抽象工厂模式均很好地符合开闭原则

38.关于抽象工厂模式中产品族和产品等级结构,叙述错误的是( )。

A、产品等级结构是从不同的产品族中任意选取产品组成的层次结构
B、产品族是指位于不同产品等级的结构、功能先关的产品组成的家族
C、抽象工厂是指一个工程等级结构可以创建出分属于不同产品等级结构的一个产品族的所有对象
D、工厂方法模式对应唯一一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构

39.关于工厂模式的叙述错误的是( )。

A、工厂模式隔离产品的创建和使用
B、在工厂类中封装产品对象的创建细节,客户类无须关心这些细节
C、工厂方法模式中的方法可以改为静态方法
D、工厂方法模式中抽象工厂声明的工厂方法返回抽象产品类型,不能返回具体产品类型

40.某公司要开发一个图标显示系统,在该系统中,曲线图生成器可以创建曲线图、曲线图图例和曲线图数据标签,柱状图生成器可以创建柱状图、柱状图图例和柱状图数据标签。用户要求可以很方便地增加新的类型的图形,系统需要具备较好的可扩展能。针对这种需求,公司采用( )最为恰当。

A、桥接模式
B、适配器模式
C、策略模式
D、抽象工厂模式

41.在( )时可以使用单例模式。

A、隔离菜单项对象的创建和使用
B、防止一个资源管理器窗口被实例化多次
C、使用一个已有的查找算法而不想修改既有代码
D、不能创建子类,需要扩展一个数据过滤类

42.以下关于单例模式的描述正确的是( )。

A、它描述了只有一个方法的类的集合
B、它能够保证一个类只产生一个唯一的实例
C、它描述了只有一个属性的类的集合
D、它能够保证一个类的方法只能被一个唯一的类调用

43.( )限制了创建类的实例数量。

A、原型模式
B、建造者模式
C、 策略模式
D、单例模式

44.以下选项中,( )不是单例模式的要点。

A、某个类只能有一个实例
B、单例类不能被继承
C、必须自行创建单个实例
D、必须自行向整个系统提供单个实例

45.某软件公司开发了一组加密类,在使用这些加密类时要采用简单工厂模式进行设计,为了减少类的个数,将工厂类和抽象加密类合并,基本UML类图如图7-3所示。以下陈述错误的是( )

在这里插入图片描述
A、在类图中,Cipher类既充当抽象产品类,又充当工厂类
B、工厂方法createCipher()的返回类型为Cipher
C、工厂方法createCipher()应定义为静态方法
D、Cipher类中encrypt()方法必须为抽象方法

46. ( )设计模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

A、Adapter(适配器)
B、Singleton(单例)
C、Abstract Factory(抽象工厂)
D、Template Method(模板方法)

47.( )设计模式将负责对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。

A、Builder(建造者)
B、Factory Method(工厂方法)
C、Prototype(原型)
D、Façade(外观)

48.当想使用一个已经存在的类,但其接口不符合需求时,可以采用( )设计模式将该类的接口转换成我们希望的接口。

A、命令 (Command)
B、适配器 (Adapter)
C、装饰 (Decorator)
D、享元 (Flyweight)

49.以下关于适配器模式的叙述错误的是( )。

A、适配器模式将一个接口转换成客户希望的另一个接口,使得原本接口不兼容的那些类可以一起工作
B、在类适配器中,Adapter和Adaptee是继承关系,而在对象适配器中,Adapter和Adaptee是关联关系
C、类适配器比对象适配器更加灵活,在Java、C#等语言中可以通过类适配器一次适配多个适配者类
D、适配器可以在不修改原来的适配者接口Adaptee的情况下将一个类的接口和另一个类的接口匹配起来

50.现需要开发一个文件转换软件,将文件由一种格式转换为另一种格式,如将XML文件转换为PDF文件,将DOC文件转换为TXT文件,有些文件格式转换代码已经存在,为了将已有的代码应用于新软件,而不需要修改软件的整体结构,可以使用( )设计模式进行系统设计。

A、适配器 (Adapter)
B、组合 (Composite)
C、 外观 (Facade)
D、 桥接 (Bridge)

51.在对象适配器中,适配器类(Adapter)和适配者类(Adaptee)之间的关系为( )。

A、关联关系
B、依赖关系
C、继承关系
D、实现关系

52. ( )是适配器模式的应用实例。

A、操作系统中的树形目录结构
B、Windows中的应用程序快捷方式
C、Java事件处理中的监听器接口
D、JDBC中的数据库驱动程序

53.以下陈述不属于桥接模式优点的是( )。

A、分离接口及其实现部分,可以独立地扩展抽象和实现
B、可以使原本由于接口不兼容而不能一起工作的那些类一起工作
C、可以取代多继承方案,比多继承方案扩展性更好
D、符合开闭原则,增加新的细化抽象和具体实现都很方便

54.以下关于桥接模式的叙述错误的是( )。

A、桥接模式的用意是将抽象化与实现化脱耦,使得两者可以独立地变化
B、桥接模式将继承关系转换成关联关系,从而降低系统的耦合度
C、桥接模式可以动态地给一个对象增加功能,这些功能也可以动态地撤销
D、桥接模式可以从接口中分离实现功能,使得设计更具扩展性

55. ( )不是桥接模式所适用的场景。

A、一个可以跨平台并支持多种格式的文件编辑器
B、 一个支持多数据源的报表生成工具,可以以不同图形方式显示报表信息
C、一个可动态选择排序算法的数据操作工具
D、一个支持多种编程语言的跨平台开发工具

56.以下关于组合模式的叙述错误的是( )。

A、组合模式对叶子对象和组合对象的使用具有一致性
B、组合模式可以通过类型系统来对容器中的构件实施约束,可以很方便地保证在一个容器中只能有某些特定的构件
C、组合模式将对象组织到树形结构中,可以用来描述整体与部分的关系
D、组合模式使得可以很方便地在组合体中加入新的对象构件,客户端不需要因为加入新的对象构件而更改代码

57.下图是( )模式的结构图。

在这里插入图片描述
A、模板方法
B、命令
C、单例
D、组合

58.现需要开发一个XML文档处理软件,可以根据关键字查询指定内容,用户可以在XML中任意选取某一节点为查询的初始节点,无须关心该节点所处的层次结构。针对该需求,可以使用( )模式来进行设计。

A、Abstract Factory(抽象工厂)
B、Flyweight(享元)
C、Composite(组合)
D、Strategy(策略)

59.某公司欲开发一个图形控件库,要求可以在该图形控件库中方便地增加新的控件,而且可以动态地改变控件的外观或给控件增加新的行为,如可以为控件增加复杂的立体边框、增加控件的鼠标拖拽行为等。针对上述需求,使用( )模式来进行设计最合适。

A、适配器 (Adapter)
B、装饰 (Decorator)
C、外观 (Facade)
D、命令 (Command)

60.以下( )不是装饰模式的适用条件。

A、要扩展一个类的功能或给一个类增加附加责任
B、要动态地给一个对象增加功能,这些功能还可以动态撤销
C、要动态组合多于一个的抽象化角色和实现化角色
D、要通过一些基本功能的组合而产生复杂功能,而不使用继承关系

61.Java IO库的设计使用了装饰模式,局部类图如下所示,在该类图中,类( )充当具体构件ConcreteComponent。

在这里插入图片描述
A、OutputStream
B、FileOutputStream
C、FilterOutputStream
D、BufferedOutputStream

62.下图是( )模式的类图。

在这里插入图片描述

A、桥接 (Bridge)
B、工厂方法 (Factory Method)
C、模板方法 (Template Method)
D、外观 (Facade)

63.以下关于外观模式的叙述错误的是( )。

A、外观模式要求一个子系统的外部与其内部的通信必须通过一个统一的外观对象进行
B、在增加外观对象之后,客户类只需要直接和外观对象交互即可,子系统类间的复杂关系由外观类来实现,降低了系统的耦合度
C、 外观模式可以很好地限制客户使用子系统类,对客户访问子系统类做限制可以提高系统的灵活性
D、如果一个系统有好几个子系统的话,可以提供多个外观类

64.毕业生通过职业介绍所找工作,该过程蕴含了( )模式。

A、外观(Facade)
B、命令(Command)
C、代理(Proxy)
D、桥接(Bridge)

65.代理模式有多种类型,其中智能引用代理是指( )。

A、为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果
B、保护目标不让恶意用户接近
C、使几个用户能够同时使用一个对象而没有冲突
D、当一个对象被引用时,提供一些额外的操作,如将此对象被调用的次数记录下来

66.以下关于代理模式的叙述错误的是( )。

A、代理模式能够协调调用者和被调用者,从而在一定程序上降低系统的耦合度
B、控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限时可以考虑使用远程代理
C、代理模式的缺点是请求的处理速度会变慢,并且实现代理模式需要额外的工作
D、代理模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用

67.以下关于命令模式的叙述错误的是( )。

A、命令模式将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化
B、命令模式可以将请求发送者和请求接收者解耦
C、使用命令模式会导致某些系统有过多的具体命令类,导致在有些系统中命令模式变得不切实际
D、命令模式是对命令的封装,命令模式把发出命令的责任和执行命令的责任集中在同一个类中,委派给统一的类来进行处理

68.在( )时无须使用命令模式。

A、实现撤销(Undo)操作和恢复(Redo)操作
B、将请求的发送者和接收者解耦
C、不改变聚合类的前提下定义作用于聚合中元素的新操作
D、不同的时间指定请求,并将请求排队

69.某计算器使用命令模式设计,其类图如下所示,在该类图中,( ① )充当请求调用者,( ② )充当请求接收者。

在这里插入图片描述

A、Calculator
B、Command
C、AddCommand
D、AddOperator

70.以下关于迭代器模式的叙述错误的是( )。

A、迭代器模式提供一种方法来访问聚合对象,而无须暴露这个对象的内部表示
B、迭代器模式支持以不同的方式遍历一个聚合对象
C、迭代器模式定义了一个访问聚合元素的接口,并且可以跟踪当前遍历的元素,了解哪些元素已经遍历过而哪些没有
D、在抽象聚合类中定义了访问和遍历元素的方法并在具体聚合类中实现这些方法

71.迭代器模式用于处理具有( )性质的类。

A、抽象
B、聚集
C、单例
D、共享

72.分析如下代码:


```handlebars
public class TestXYZ {int behaviour;//Getter and Setter......public void handleAll(){if(behaviour == 0){ //do something }else if(behaviour == 1){ //do something }else if(behaviour == 2){ //do something }else if(behaviour == 3){ //do something }... some more else if ...}}

为了提高代码的扩展性和健壮性,可以使用( )设计模式来进行重构。

A、Visitor(访问者)
B、Facade(外观)
C、Memento(备忘录)
D、State(状态)

73.( )设计模式定义了对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。

A、Adapter(适配器)
B、Iterator(迭代器)
C、Prototype(原型)
D、Observer(观察者)

74.下列UML类图表示的是( )设计模式

在这里插入图片描述

A、备忘录 (Memento)
B、策略 (Strategy)
C、状态 (State)
D、观察者 (Observer)

75.在下图所示的设计模式中,( )。

在这里插入图片描述

A、一个Subject对象可对应多个Observer对象
B、Subject只能有一个ConcreteSubject子类
C、Observer只能有一个ConcreteObserver子类
D、一个Subject对象必须至少对应一个Observer对象

76.下面这句话隐含着( )设计模式。

我和妹妹跟妈妈说:“妈妈,我和妹妹在院子里玩。饭做好了叫我们一声。”

A、Facade
B、Chain of Responsibility
C、Observer
D、Iterator

77.( ① )设计模式允许一个对象在其内部状态改变时改变它的行为。下图为这种设计模式的类图,已知类State为抽象类,则类( ② )的实例代表了Context对象的状态。

在这里插入图片描述

A、单例 (Singleton)
B、桥接 (Bridge)
C、组合 (Composite)
D、状态 (State)

A、Context
B、ConcreteStateA
C、Handle
D、State

78.场景( )不是状态模式的实例。

A、银行账户根据余额不同拥有不同的存取款操作
B、游戏软件中根据虚拟角色级别的不同拥有不同的权限
C、某软件在不同的操作系统中呈现不同的外观
D、会员系统中会员等级不同可以实现不同的行为

79.以下关于状态模式叙述错误的是( )。

A、状态模式允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类
B、状态模式中引入了一个抽象类来专门表示对象的状态,而具体的状态都继承了该类,并实现了不同状态的行为,包括各种状态之间的转换
C、状态模式使得状态的变化更加清晰明了,也很容易创建对象的新状态
D、状态模式完全符合开闭原则,增加新的状态类无须对原有类库进行任何修改

80.以下关于策略模式叙述错误的是( )。

A、策略模式是对算法的包装,是把算法的责任和算法本身分隔开,委派给不同的对象管理
B、在Context类中,维护了对各个ConcreteStrategy的引用实例,提供了一个接口供ConcreteStrategy存储数据
C、策略模式让算法独立于使用它的客户而变化
D、策略模式中,定义一系列算法,并将每一个算法封装起来,并让它们可以相互替换

81.以下关于策略模式的优缺点描述错误的是( )。

A、策略模式中,客户端无须知道所有的策略类,系统必须自行提供一个策略类
B、策略模式可以避免使用多重条件转移语句
C、策略模式会导致产生大量的策略类
D、策略模式提供了管理相关算法族的办法

82.某系统中用户可自行动态选择某种排序算法之一(如选择排序、冒泡排序、插入排序)来实现某功能,该系统的设计可以使用( )设计模式。

A、状态
B、策略
C、模板方法
D、工厂方法

83.某系统中的某子模块需要为其他模块提供访问不同数据库系统(Oracle、SQL Server、DB2 UDB 等)的功能,这些数据库系统提供的访问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库,再打开数据库,最后对数据进行查询,可使用( )设计模式抽象出相同的数据库访问过程。

A、观察者
B、访问者
C、模板方法
D、策略

84.以下关于模板方法模式的叙述错误的是( )。

A、模板方法模式定义了一个操作中算法的骨架,而将一些步骤延迟到子类中
B、模板方法模式是一种对象行为型模式
C、模板方法使得子类可以不改变一个算法的结构即可重定义该算法某些特定步骤
D、模板方法不仅可以调用原始的操作,还可以调用定义于AbstractClass中的方法

85.在很多流行的交互式绘图程序中,当用户选择不同的绘图工具时图形编辑器的行为将随当前工具的变化而改变。如当一个“绘制椭圆”工具被激活时,可以创建椭圆对象;当一个“选择”工具被激活时,可以选择图形对象;当一个“填充”工具被激活时,可以给图形填充颜色等。在该程序中,可以使用( )设计模式来根据当前的工具来改变编辑器的行为。

A、工厂方法 (Factory Method)
B、状态 (State)
C、备忘录 (Memento)
D、访问者 (Visitor)
答案链接:添加链接描述
(亦可以私信索要)


http://chatgpt.dhexx.cn/article/reusiOjN.shtml

相关文章

单例设计模式

一.何为单例设计模式 如其名字,单例设计模式就是指的是一个类中只允许存在一个对象实例。 在java中,我们存在两种创建单例模式的思路:饿汉式和懒汉式 ①饿汉式:在创建类时直接创建对象实例 public class SingleHungryMan {//建立类…

设计模式在程序中的使用

OO设计的主要目的,在于分割责任,将每个模块的责任降低到合理的程度,并对各个模块进行封装以及降低两个模块之间的耦合度,达到修改一处不影响另外一处的目的。 这个原则其实并不仅仅局限于OO设计,只是OO设计提供了更好…

设计模式之命令模式

命令模式 命令模式的定义非命令模式实现:命令模式的实现: 命令模式的定义 说实话这个模式挺令人纠结的,但从这个模式的定义上来看,有点让人摸不到什么头脑,而且查看资料以后会发现还是有点稀里糊涂的,说懂…

《C++ 设计模式》

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 设计模式(Design Pattern)代表了最佳的实践,在面向对象的编程中被很多老鸟们反复使用。使用设计模式有很多好处: 可重用代码保…

设计模式课程设计

文章目录 题目要求: 具体作业如下:一、设计思路二、所用模式介绍1.简单工厂模式2.装饰模式3.观察者模式 具体实现过程程序分为三个部分: PS.代码写的比较敷衍,主要是应付作业用,请大家自行斟酌抄袭 又到了一年两度的课程设计时间&…

23种设计模式总结

一、什么是设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢…

设计模式之——桥接模式

设计模式: 前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定。而是一套用来提高代码可复用性、可维护性、可读性、稳健性、以及安全性的解决方案 设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性…

面向对象程序设计

之前复习面向对象的时候整理的,丢出来一起分享一下。因为复习得很赶,只是大致的整理,且大部分图片来自老师的ppt,可能不是很准确。如果要详细了解其中的某个知识点请另外搜索。 但是老师不讲武德啊,明明提纲给了不按提…

MVC设计模式

MVC的全名是Model View Controller,是模型(Model)-视图(view)-控制器(controller)的缩写,是一种设计模式。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在…

设计模式考题复习

一.定义 设计模式六大基本原则: 单一职责原则:一个类或者一个方法只负责一项职责,尽量做到类的只有一个行为原因引起变化;里氏替换原则:能出现子类的地方都应该可以允许父类出现,也就是子类可以扩展父类的…

一文带你通俗理解23种软件设计模式(推荐收藏,适合小白学习,附带C++例程完整源码)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、设计模式是什么? 设计模式是为了解决在软件开发过程中遇到的某些问题而形成的思想。同一场景有多种设计模式可以应…

设计模式之策略模式详解

设计模式之策略模式详解 概述 先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多&#xff0c…

设计模式——桥接模式

定义 桥接模式(Bridge Pattern),也叫做桥梁模式,结构型设计模式的一种,这个模式相对来说有些难理解。桥接,顾名思义,就是用来连接两个部分,为被分离了的抽象部分和实现部分搭桥。 …

设计模式23模式介绍

🏆作者简介:哪吒,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪 ,专注Java硬核干货分享,立志做到Java赛道全网Top N。 🏆本文收录于,Java基础教程系…

程序设计模式23+1种定义+UML图(有部分分析和联用)

程序设计模式这门课已经学完了,复习的时候做了一个这样的汇总,希望可以给后来学习这门课的同学一些帮助。 设计模式的分类 根据目的(模式是用来做什么的)可分为创建型(Creational),结构型(Structural)和行为型(Behavio…

程序员必备的21种“设计模式之道”!

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式的目的就是为了重用代码、让代码更容易被他人理解、保证代码可靠性。欢迎小伙伴们收藏关注,持续分享更多优质干货! 设计模式之道 何为设计模式&#xff1f…

Microsoft Office Visio 缺失安装文件的解决方法(附viso安装密钥)

工作环境(蓝色粗体字为特别注意内容) 1,软件环境:Windows 7、Microsoft Office Visio Professional 2007、Microsoft Office Enterprise2007 2,参考文献:https://zhidao.baidu.com/question/1669305667489578747.html 最近在写文…

Microsoft visio 2019 professional 安装

Visio 2019 pro,全程关闭防火墙,运行文件采用管理员运行 Visio 2019 pro 下载jihuo汉化 Visio 2019 pro 下载 从下方链接下载 链接:https://pan.baidu.com/s/1OQXUfOItLJhbKsDf_u3pEQ 提取码:1234 里面包含: 点击V…

Oracle高水位线 HWM降低技巧

作者:IT邦德 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 (Web\java\Python)工作,主要服务于生产制造 现拥有 Oracle 11g OCP/OCM、 Mysql、Oceanbase(OBCA)认证 分布式TBase\TDSQL数据库、国…

HMM

Author: 李文乐;Email: cocoleYYoutlook.comDatawhale 直观理解 马尔可夫链(英语:Markov chain),又称离散时间马尔可夫链(discrete-time Markov chain,缩写为DTMC),因俄国数学家安德…