设计模式题库--自编版选择题1、设计模式具有()的优点。A、提高系统性能B、降低软件规模和复杂度C、减少代码开发工作量D、提升软件设计的质量2、在面向对象软件的开发中,采用设计模式()。A、可以减少在设计和过程中需要创建的实例对象的数量B、可以保证程序的运行速度达到最优值C、可以复用相似问题的相同解决方案D、允许在非面向对象程序设计语言中使用面向对象的概念3、()都是行为型设计模式。A、组合模式、适配者模式和代理模式B、观察者模式、职责链模式和策略模式C、原型模式、建造者模式和单例模式D、迭代器模式、命令模式和桥接模式4.开闭原则是面向对象的可复用设计的基石,开闭原则是指一个软件实体应当对()开放,对()关闭;里氏代换原则是指任何()可以出现的地方,()一定可以出现;依赖倒置原则就是依赖于(),而不要依赖于(),或者说要针对接口编程,不要针对实现编程。①A、修改B、扩展C、分析D、设计②A、修改B、扩展C、分析D、设计③A、变量B、常量C、基类对象D、子类对象④A、变量B、常量C、基类对象D、子类对象⑤A、程序设计语言B、建模语言C、实现D、抽象⑥A、程序设计语言B、建模语言C、实现D、抽象5.关于单一责原则,以下叙述错误的是()。A、一个雷只负责一个功能领域中的相应职责。B、就一个类而言,应该有且仅有一个引起它变化的原因。C、一个类承担的职责越多,越容易复用,被复用的可能性越大。D、当一个类承担的职责过多时,需要将职责进行分离,将不同的职责封装在不同的类中。6.以下关于面向对象设计的的叙述中,错误的是()。A、高层模块不应该依赖于低层模块。B、抽象不应该依赖于细节。C、细节可以依赖于抽象。D、高层模块无法不依赖于低层模块。7.在系统设计中应用迪米特法则,以下叙述有误的是()。A、在类的划上,一个尽量创建松耦合的类,类的耦合度越低,复用越容易。B、如果两个类之间不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。C、在对其他类的引用上,一个对象对其他对象的引用应该降到最低。D、在类的设计上,只要有可能,一个类型应该尽量设计成抽象类或接口,且成员变量和成员函数的访问权限最好设置为公开的。8.在简单工厂模式中,如果需要增加新的具体产品,通常需要修改()的源代码。A、抽象产品类B、其他具体产品类C、工厂类D、客户类9.以下关于简单工厂模式叙述错误的是()。A、简单工厂模式可以根据参数的不同返回不同的产品类的实例。B、简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。C、简单工厂模式可以减少系统中的类的个数,简化系统的设计,使得系统更易于理解。D、系统的扩展困难,在添加新的产品时需要修好工厂的业务逻辑,违背了开闭原则。10.以下代码使用了()模式。abstractclassProduct{publicabstractvoidProcess();}classConcreateProductB:Product{PublicoverridevoidProcess()...}ClassFactory{PublicstaticProductCreateProduct(chartype){Switch(type){Case‘A’:ReturnnewConcreateProductA();break;Case‘B’:ReturnnewConcreateProductB();break;}}}A、SimpleFactoryB、FactoryMethodB、C、AbstractFactoryD、未使用任何设计模式11.不同品牌的手机应该由不同是公司所造,例如Motorola公司生产Motorola手机,Nokia公司生产Nokia手机。该场景蕴含了()模式。A、SimpleFactoryB、FactoryMethodC、AbstractFactoryD、Builder12.以下关于工厂方法模式的叙述错误的是()。A、在工厂方法模式中引入了抽象工厂类,二具体产品的场景延迟到具体工厂中实现B、使用工厂方法模式添加新的产品对象很容易,无须对原有系统进行修改,符合开闭原则C、工厂方法模式存在的问题是在添加新产品时,需要编写新的具体产品类,而且提供与之对应的具体工厂类,随着类个数的增加,会给系统带来一些额外开销。D、工厂方法模式是所有形式的工厂模式中的最为抽象和最具一般性的一种形态,工厂方法模式退化后可以演变成抽象工厂模式。13.某银行系统采用工厂模式描述其不同账户之间的关系,设计出的类图如图4-7所示。其中,与工厂模式中的“Creator”角色相对应的类是();与“Product”角色相对应的类是()。①A、BankB、AccountC、CheckingD、Savings②A、BankB、AccountC、CheckingD、Savings14、关于C#中的MemberwiseClone()方法,以下叙述有误的是()。A、对于对象x,都有x.MemberwiseClone()==xB、对于对象x,都有x.MemberwiseClone().GetType()==x.GetType()C、对于对象x的成员对象Member,都有x.MemberwiseClone().Menber==x.MemberD、对于对象x的成员对象Member,都有x.MemberwiseClone().Member.GetType()==x.Member.GetType.15.以下关于原型模式叙述错误的是()。A、原型模式通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象B、浅克隆仅仅复制所考虑的对象,而不复制它所引用的对象,也就是其中的成员对象并不复制C、在原型模式中实现深克隆时通常需要编写较为复杂的代码classClassModelBank+createAccount()ClientAccountCheckingSavings1..*HoldsD、在原型模式中不需要为每一个类配备一个克隆方法,因此对于原型模式的扩展很灵活,对于已有类的改造也较为容易16.某公司要开发一个即时聊天软件,用户在聊天过程中可以与多位好友同时聊天,在私聊时将产生多个聊天窗口,为了提高聊天窗口的创建效率,要去根据第一个窗口快速创建其他窗口。针对这种需求,采用()进行设计最为合适。A、享元模式B、单例模式C、原型模式D、组合模式17.在()时可使用单例模式。A、隔离菜单项对象的创建和使用B、防止一个资源管理器窗口被实例化多次C、使用一个已有的查找算法而不想修改既有代码D、不能创建子类,需要扩展一个数据过滤器18.以下关于单例模式的描述,正确的是()。A、它描述了只有一个方法的类的集合B、它能够保证一个类只产生一个唯一的实例C、它描述了只有一个属性的类的集合D、它能够保证一个类的方法只能被一个唯一的类调用19.以下()不是单例模式的要点。A、某个类只能有一个实例B、单例类不能被继承C、必须自行创建单个实例D、必须自行向整个系统提供单个实例20、()将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。A、命令(Command)模式B、适配器(Adapter)模式C、策略(Strategy)模式D、单例(Simple)模式21.以下关于适配器模式的叙述错误的是()。A、适配器模式将一个接口装换成客户希望的另一个接口,使得原本由于接口不兼容那些类可以一起工作。B、在类适配器中,Adapter和Adaptee是继承关系,而在对象适配器中,Adapter和Adaptee是关联关系。C、类适配器比对象适配器更加灵活,在C#语言中可以通过类适配器一次视频多个适配者类。D、适配器可以在不修改原来的适配者接口Adaptee的情况下将一个类的接口和另一个类的接口匹配起来。22.现需要开发一个文件转换软件,将文件由一种格式转换为另一种格式,例如将XML文件转换为PDF文件,将DOC文件转换为TXT文件,有些文件格式转换代码已经存在,为了将已有的代码应用于新软件,而不需要修改软件的整体结构,可以使用()模式进行系统设计。A、适配器(Adapter)B、组合(Composite)C、外观(Faced)D、桥接(Bridge)23.在对象适配器模式中,适配器类(Adapter)和适配者类(Adaptee)之间的关系为()。A、关联关系B、依赖关系C、继承关系D、实现关系24.()模式将抽象部分与它的实现部分相分离,使它们都可以独立地变化。图10-7所示为该模式的图,其中,()用于定义实现部分的接口。①A、单例(Simple)B、桥接(Bridge)C、组合(Composite)D、外观(Faced)②A、AbstractionB、ConcreteImplementorAC、ConcreteImplementorBD、Implementor25.以下关于桥接模式的叙述错误的是()。A、桥接模式的用意是将抽象化与实现化解耦,使得亮着可以独立地变化。B、桥接模式将继承关系转换成关联关系,从而降低系统的耦合度。C、桥接模式来源动态地给一个对象增加功能,这些功能也可以动态的撤销。D、桥接模式可以从接口中分离实现功能,使得设计更具有扩展性。26.()不是桥接模式所适用的环境。A、一个可以跨平台并支持多种格式的文件编辑器B、一个支持多数据源的报表生成工具,可以以不同的图形方式显示报表信息C、一个可动态选择排序算法的数据操作工具D、一个支持多种编程语言的跨平台开发工具27.当不能采用生成子类的方法进行扩展时,可采用()模式动态地给一个对象添加一些额外的职责。A、外观(Faced)B、单例(Simple)C、参与者(Participant)D、装饰(Decorator)1、以下()不是装饰模式的适用条件。A、要扩展一个类的功能或给一个类增加附加责任B、要动态地给一个对象增加功能,这些功能还可以动态撤销C、要动态组合多于一个的抽象化角色和实现化角色D、要通过一些基本功能的组合产生复杂功能,而不使用继承关系28.Windows操作系统中的应用程序快捷方式是()模式的应用实例。A、代理(Proxy)B、组合(Composite)C、装饰(Decorator)D、外观(Faced)1、以下关于代理模式的叙述错误的是()。A、代理模式能够协调调用者和被调用者,从而在一定程度上降低系统的耦合度B、控制对一个对象的访问,给不同的用户提供不同级别的使用权限时可以考虑使用远程代理C、代理模式的缺点是请求的处理速度会变慢,并且实现代理模式需要额外的工作D、代理模式给某一个对象提供一个代理,并由代理对象控制对原对象的引class2Abstraction+Operation()«interface»Implementor+OperationImpl()RefinedAbstraction+Operation()ConcreteImplementorA+OperationImpl()ConcreteImplementorB+OperationImpl()impl.OperationImpl();用29.代理模式有多种类型,其中,智能引用代理是指()。A、为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果B、保护目标不让恶意用户接近C、使几个用户能够同时使用一个对象而没有冲突D、当一个对象被引用时,提供一些额外的操作,例如将此对象被调用的次数记录下来30.以下关于命令模式的叙述错误的是()。A、命令模式将一个请求封装为一个对象,从而可以用不同的请求对客户进行参数化B、命令模式可以将请求发送至和请求接受者解耦C、使用命令模式会导致某些系统有过多的具体命令类,导致在有些系统中命令模式变得不切实际D、命令模式是对命令的封装,命令模式把发出命令的责任和执行命令的责任机制在同一个类中,委派给同意的类来进行处理31.在()时无需使用命令模式。A、实现撤销操作和恢复操作B、将请求的发送者和接收者解耦C、不改变聚合类的前提下定义