您好,欢迎访问三七文档
1.什么是设计模式?设计模式的目标是什么?答:设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件开发经验。2.设计模式具有哪三大特点?答:(1)在特定的场景下有可重用性,对相同类型不同问题的环境,其解决方案都有效。(2)可传授性,即问题出现的机会很多,解决问题的方案相同,人们相对可以接受。(3)有表示模式的名称。3.GOF设计模式常用的有几种?GOF设计模式按照模式的目的可分为哪三类?答:行为型,结构型,创建型4.画出抽象工厂方法类图(这类题自己看书去。)5.针对接口编程,不针对实现编程的意义。答:主题与观察者都是用接口:观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。这样可以让两者之间运作正常,又同时具有松耦合的优点。6.面向对象(OO)的原则有:答:1.封装变化2.多用组合,少用继承3.针对接口编程,不针对实现编程4.为交互对象之间的松耦合设计而努力5.对扩展开放,对修改关闭6.依赖抽象,不要依赖具体类7.只和朋友交谈8.别找我,我会找你9.类应该只有一个改变的理由7.耦合分为几种?(1)内容耦合(2)公共耦合(3)外部耦合(4)控制耦合(5)标记耦合(6)数据耦合(7)非直接耦合8.GOF模式分为几种,每种包含哪些模式?答:分为3种。创建型设计模式:简单工厂模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式;结构型设计模式:适配器模式,桥接模式,组合模式,装饰模式,外观模式,轻量级模式,代理模式;行为性设计模式:责任链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,策略者模式,模板方法模式,访问者模式。1.不要和陌生人说话”是(D)原则的通俗表述A.接口隔离B.里氏代换C.依赖倒转D.迪米特2.当一个抽象模型有两个方面,其中一个方面依赖于另一方面,将这两者封装在独立的对象中以使它们可以各自独立地改变和复用,可以考虑使用(A)A.观察者模式B.命令模式C.适配器模式D.单例模式3.对于某些类来说,只有一个实例是非常重要的,例如,系统中可以有都种类型的打印机,但是只能有一个打印机假脱机,只应该一个文件系统和一个窗口管理器,为此,可以使用(C)。A.工厂模式B.享元模式C.单例模式D.外观模式4.当需要支持日志修改时,可以考虑使用(A)A.命令模式B.工厂模式C.单例模式D.适配器模式5.当需要在不同时刻指定、排列和执行请求是,可以考虑使用(A)。A.命令模式B.策略模式C.适配器模式D.责任链模式6.在需要构建一个层次结构的子系统时,可以使用门面模式定义子系统中每层的入口点,可以考虑使用(A)。A.外观模式B.工厂模式C.装饰模式D.适配器模式7.希望创建一个可复用的类,该类必须能够与接口不可预订的类协同工作,可以考虑使用(B)A.桥接模式B.适配器模式C.工厂模式D.装饰模式8.在面向对象的原则中,(B)表示使用多个专门的接口比使用单一的总接口要好,一个类对另一个来的依赖性应当是建立在最小的接口上的。A.单一责任原则B.接口隔离原则C.依赖倒转原则D.迪米特原则9.当需要强调一系列相关产品对象的设计以便进行联合使用,可以考虑使用(A)。A.工厂模式B.单例模式C.建造者模式D.原型模式10.当客户程序与抽象类的实现部分之间存在很大的依赖性时,可以考虑使用(D)A.单例模式B.享元模式C.工厂模式D.外观模式11.在设计模式中,(D)保证每个类只要单个实例。A.工厂模式B.外观模式C.享元模式D.单例模式12.(C)是指以设计复用为目的,采用一种良好定义、正规的、一致的方式记录的软件设计经验。A.架构B.UML模型C.设计模式D.设计数据13.在面向对象的的设计原则中,(A)表示高层模块不应该依赖于低层模块,都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。A.依赖倒转原则B.开放封闭原则C.迪米特原则D.里氏替换原则14.(A)将整个软件系统划分为模型、视图和控制器三个部分。A.MVCB.分层模式C.管道模式D.架构模式15.在面向对象的设计原则中,(B)表示软件实体应当对扩展开放,对修改关闭,即软件实体应当在不修改的前提下扩展。A.单一责任原则B.开放封闭原则C.里氏替换原则D.迪米特原则16.在设计模式中,(C)的核心是缓存和共享A.门面模式B.工厂模式C.享元模式D.单例模式17.关于适配器模式(Adapter)说法正确的是AA.将抽象部分与实现部分分离,使得它们两部分可以独立地变化B.将一个接口转换成为客户想要的另一个接口。C.组合多个对象形成树形结构以表示整体-部分的结构层次。其对单个对象和组合对象的使用具有一致性。D.为其他对象提供一个代理或地方以控制对这个对象的访问。18.迭代器模式(Iterator)模式适用于BA.需要在不同的时间创建请求,生成请求队列,执行请求。B.需要遍历访问聚集中的对象而不能暴露聚集中内部结构。C.想避免抽象方法和其实现方法绑定在一起。D.一组对象复杂地相互通信但其方法是定义明确的。19.请说出以下是运用何种设计模式AabstractclassChess{publicabstractvoidDisplay();}classBlackChess:Chess{publicoverridevoidDisplay(){Console.WriteLine(黑棋);}}classChessFactory{publicHashtablechesses=newHashtable();publicChessGetChess(stringkey){Chesschess=(Chess)chesses[key];if(chess==null){switch(key){case黑:chess=newBlackChess();break;case白:chess=newWhiteChess();break;}chesses.Add(key,chess);}returnchess;}}A.享元模式(Flyweight)B.工厂模式(Factory)C.备忘录模式(Memento)D.组合模式(Composite)20.以下哪种设计模式最符合以下场景说明:【军情的传递】军队中军情的传递就是一个责任链,下属行动需要上级批准,所以要把行动计划报给上级,上级又传给上级,直至有人可以决定。一个士兵请求进入反恐行动组,他就会给班长发送请求,班长给排长,排长给连长,这样一直传到军长,由军长进行批准。A.桥接模式(Bridge)B.外观模式(Facade)C.命令模式(Command)D.责任链模式(ChainofResponsibility)21.以下哪种设计模式最符合以下场景说明:D【电视节目选择器】电视提供了(creates)面板和遥控器两种节目选择方法,都具有“下一个”和“上一个”按钮来控制转到不同的频道。A.责任链模式(ChainofResponsibility)B.观察者模式(Observer)C.模板方法模式(TemplateMethod)D.迭代器模式(Iterator)22.以下哪种设计模式能够支持动态地给一个对象增加其他职责而且在职责整合时支持热插拔BA.桥接模式(Bridge)B.装饰模式(Decorator)C.享元模式(Flyweight)D.外观模式(Facade)23.关于设计模式本质的说法,以下哪个是正确的CA.设计模式利用类的继承来实现功能扩展B.设计模式利用类的组合来实现功能扩展C.设计模式就是在不修改原有类的基础上通过新增类来实现功能扩展或功能变更D.设计模式就是利用类的继承和组合来实现功能扩展或功能变更24.请说出以下是运用何种设计模式DabstractclassAbstractFactory{publicstaticAbstractFactoryCreateFactory(stringtype){AbstractFactoryfactory=null;switch(type){caseBmw:factory=newBmwFactory();break;caseAudi:factory=newAudiFactory();break;}returnfactory;}publicabstractAbstractSportsCarCreateSportsCar();publicabstractAbstractBussinessCarCreateBussinessCar();}classBmwFactory:AbstractFactory{publicoverrideAbstractSportsCarCreateSportsCar(){returnnewBmw.BmwSportsCar();}publicoverrideAbstractBussinessCarCreateBussinessCar(){returnnewBmw.BmwBussinessCar();}}A.组合模式(Composite)B.简单工厂模式(SimpleFactory)C.工厂方法模式(FactoryMethod)D.抽象工厂模式(AbstractFactory)25.以下哪个设计模式最符合以下的场景说明:A1.能使客户端独立于产品的创建过程,并且在系统中引入新产品时无需对客户端进行修改。A.工厂模式(Factory)B.状态模式(State)C.享元模式(Flyweight)D.原型模式(Prototype)26.以下哪个设计模式是着重于一步步构造一个复杂对象并且是最后步骤才将返回此对象CA.简单工厂模式(SimpleFactory)B.抽象工厂模式(AbstractFactory)C.建造者模式(Builder)D.单例模式(Singleton)27.异常处理机制可理解为哪一种行为模式CA.观察者(Observer)模式B.迭代器(Iterator)模式C.职责链(ChainofResponsibility)模式D.策略(Strategy)模式28.Observer(观察者)模式适用于CA.当一个抽象模型存在两个方面,其中一个方面依赖于另一方面,将这二者封装在独立的对象中以使它们可以各自独立地改变和复用B.当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变时C.当一个对象必须通知其它对象,而它又不能假定其它对象是谁。也就是说你不希望这些对象是紧密耦合的D.一个对象结构包含很多类对象,它们有不同的接口,而想对这些对象实施一些依赖于其具体类的操作29.封装分布于多个类之间的行为的模式是CA.观察者(Observer)模式B.迭代器(Iterator)模式C.访问者(Visitor)模式D.策略(Strategy)模式30.结构型模式中最体现扩展性的几种模式是CA.适配器(Adapte)模式B.合成(Composite)模式C.装饰(Decorator)模式D.桥接(Bridge)模式31.常用的基本设计模式可分为AA.创建型、结构型和行为型B.对象型、结构型和行为型C.过程型、结构型和行为型D.抽象型、接口型和实现型32.以下关于创建型模式说法正确的是AA.创建型模式关注的是对象的创建B.创建型模式关注的是功能的实现C.创建型模式关注的是组织类和对象的常用方法D.创建型模式关注的是对象间的协作33.以下哪个模式是利用一个对象,快速地生成一批对象CA.抽象工厂(AbstractFactory)模式B.合成(Composite)模式C.原型(Prototype)模式D.桥接(Bridge)模式34.以下关于抽象工厂模式与建造者模式区别,说法不正确的是CA.建造者模式着重于一步步构造一个复杂对象;B.建造者模式在最后一步返回产品;C.抽象工厂中,产品是立即返回的D.抽象工厂着重于单个的产品对象。35.以下对于代理模式,说法不正确的是BA.虚拟代理:代理不会生成一个真实的耗费代理,直到非常有必要时(首次有请求0。用来存放花费大(实例化要很长时间)
本文标题:设计模式简答题
链接地址:https://www.777doc.com/doc-7228931 .html