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.MVC
      B.分层模式
      C.管道模式
      D.架构模式
15.在面向对象的设计原则中,(B)表示软件实体应当对扩展开放,对修改关闭,即软件实体应当在不修改的前提下扩展。
      A.单一责任原则
      B.开放封闭原则
      C.里氏替换原则
      D.迪米特原则
16.在设计模式中,(C)的核心是缓存和共享
      A.门面模式
      B.工厂模式
      C.享元模式
      D.单例模式
17.关于适配器模式(Adapter)说法正确的是  A
      A.将抽象部分与实现部分分离,使得它们两部分可以独立地变化
      B.将一个接口转换成为客户想要的另一个接口。
      C.组合多个对象形成树形结构以表示整体-部分的结构层次。其对单个对象和组合对象的使用具有一致性。
             
      D.为其他对象提供一个代理或地方以控制对这个对象的访问。
18.迭代器模式(Iterator)模式适用于  B
      A.需要在不同的时间创建请求,生成请求队列,执行请求。
             
             
      B.需要遍历访问聚集中的对象而不能暴露聚集中内部结构。
      C.想避免抽象方法和其实现方法绑定在一起。
      D.一组对象复杂地相互通信但其方法是定义明确的。
19.请说出以下是运用何种设计模式  A
    abstract class Chess
        {
            public abstract void Display();
        }
    class BlackChess : Chess
        {
            public override void Display()
            {
                Console.WriteLine(""黑棋"");
            }
        }
    class ChessFactory
        {
            public Hashtable chesses = new Hashtable();
            public Chess GetChess(string key)
            {
                Chess chess = (Chess)chesses[key];
                if (chess == null)
                {
                    switch (key)
                    {
                        case ""黑"":
                            chess = new BlackChess();
                            break;
                        case ""白"":
                            chess = new WhiteChess();
                            break;
                      }
                    chesses.Add(key, chess);
                }
                return chess;
            }
        }
     
      A.享元模式(Flyweight) 
      B.工厂模式(Factory)
      C.备忘录模式(Memento)
             
      D.组合模式(Composite) 
20.以下哪种设计模式最符合以下场景说明:
    【军情的传递】
    军队中军情的传递就是一个责任链,下属行动需要上级批准,所以要把行动计划报给上级,上级又传给上级,直至有人可以决定。一个士兵请求进入反恐行动组,他就会给班长发送请求,班长给排长,排长给连长,这样一直传到军长,由军长进行批准。
      A.桥接模式(Bridge)
             
      B.外观模式(Facade)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。