设计模式面试题

DesignPatterns(设计模式)

1、开发中都用到了那些设计模式?用在什么场合? 
每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。

2、编程题: 写一个Singleton出来。
 Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
 第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
           private Singleton(){}  // 私有的构造方法
      //在自己内部定义自己一个实例,是不是很奇怪?
      //注意这是private 只供内部调用
      private static Singleton instance = new Singleton();
      //这里提供了一个供外部访问本class的静态方法,可以直接访问  
      public static Singleton getInstance() {
        return instance;   
      } 
    }   

第二种形式: 
public class Singleton { 
  private static Singleton instance = null;
  public static synchronized Singleton getInstance() {
  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
  //使用时生成实例,提高了效率!
  if (instance==null)
    instance=new Singleton();
return instance;   } 
}  

 其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些 


3: 什么是策略模式?什么情况下使用?
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换
Context(应用场景):
1、 需要使用ConcreteStrategy提供的算法。
2、 内部维护一个Strategy的实例。
3、 负责动态设置运行时Strategy具体的实现算法。
4、 负责跟Strategy之间的交互和数据传递。
 

5、开发中都用到了那些设计模式?用在什么场合? 
答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。 

6、说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
  Session Facade Pattern:使用SessionBean访问EntityBean
Message Facade Pattern:实现异步调用
EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问
Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性
Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性
Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性
EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。


7 、j2ee常用的设计模式?说明工厂模式。
    Java中的23种设计模式:
Factory(工厂模式),      Builder(建造模式),       Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式),    Facade(门面模式),
Adapter(适配器模式),    Bridge(桥梁模式),        Composite(合成模式),
Decorator(装饰模式),    Flyweight(享元模式),     Proxy(代理模式),
Command(命令模式),      Interpreter(解释器模式), Visitor(访问者模式),
Iterator(迭代子模式),   Mediator(调停者模式),    Memento(备忘录模式),
Observer(观察者模式),   State(状态模式),         Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

8、开发中都用到了那些设计模式?用在什么场合?

  答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。

9、说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法

  答:Session Facade Pattern:使用SessionBean访问EntityBean

  Message Facade Pattern:实现异步调用

  EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问

  Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性

  Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性

  Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性

  EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。

10、j2ee常用的设计模式?说明工厂模式。
  答:Java中的23种设计模式:
  Factory(工厂模式),   Builder(建造模式),       Factory Method(工厂方法模式),
  Prototype(原始模型模式),Singleton(单例模式),     Facade(门面模式),
  Adapter(适配器模式),    Bridge(桥梁模式),        Composite(合成模式),
  Decorator(装饰模式),    Flyweight(享元模式),     Proxy(代理模式),
  Command(命令模式),      Interpreter(解释器模式), Visitor(访问者模式),
  Iterator(迭代子模式),   Mediator(调停者模式),    Memento(备忘录模式),
  Observer(观察者模式),   State(状态模式),         Strategy(策略模式),
  Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)

  工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。



你可能感兴趣的:(设计模式,面试题)