设计模式中的面试题

本文主要探讨了设计模式在面试中的重要性,特别是在Java和Spring框架中的应用。内容包括原型设计模式的深浅拷贝、Spring中原型bean的实现、设计模式的七大原则及其在项目实践中的应用,特别是状态模式在金融借贷平台订单状态管理中的运用,以及解释器模式在Spring SpelExpressionParser中的使用。同时,文章还涵盖了单例设计模式的多种实现方式。
摘要由CSDN通过智能技术生成

设计模式面试题

java设计模式内容介绍

原型设计模式问题:

  • 有请使用UML类图画出原型模式核心角色。

  • 原型设计模式的深拷贝和浅拷贝事什么,并写出深拷贝的两种方式的源码(重写clone方法实现深度拷贝,使用序列化来实现深拷贝)

  • 在Spring框架中哪里使用到原型模式,并对源码进行分析beans.xml

Java设计模式内容介绍

  • Spring中原型bean的创建,就是原型模式的应用
  • 代码分析+Debug源码

beans.xml

Test.java

ApplicationContext applicationContext = new 
    ClassPachXmlApplicationContext("beans.xml") 
//获取monster[通过id获取monster]
    Object bean = applicationContext.getBean("id01")
    System.out.println("bean"+bean);

@Override
public Object getBean(String name) throws BeansException{
    return doGet(name,null,null,false);
}

设计模式的七大原则:

  • 七大设计原则核心思想
  • 能够以类图说明设计原则
  • 在项目开发中,你在哪里使用到了OCP原则

设计模式常用的七大原则有:

  • 单一职责原则
  • 接口隔离原则
  • 依赖倒转原则
  • 里氏替换原则
  • 开闭原则OCP
  • 迪米特法则
  • 合成复用原则

金融借贷平台项目:

​ 接待平台的订单,有审核-发布-抢单 等等步骤,随着操作的不同,会改变订单的状态,项目中的这个模块实现就会使用到状态模式,请你使用状态模式进行设计,并完成实际代码。

问题分析:

​ 这类代码难以应对变化,在添加一种状态时,我们需要手动添加if/else,在添加一种功能时,要对所有的状态进行判断。因此代码会变得越来越臃肿,并且一单没有处理某个状态,便会发生及其严重的BUG,难以维护

解释器设置模式:

  • 介绍解释器设计模式是什么?

    • Spring框架中SpelExpressionPaser就使用到解释器模式
    • 代码分析+Debug源码+模式分析说明
  • 画出解释器设计模式的UML类图分析设计模式中的各个角色是什么?
    在这里插入图片描述

/** 
 * 声明一个抽象的解释操作 
 */
public interface Interpreter { 
    
  public void interpret(Context context); //实际中,可以有个返回的类型,定义解释出的数据对象 
} 
 
public class XmlSaxInterpreter implements Interpreter { 
  
  @Override
  public void interpret(Context context) { 
    System.out.println("xml sax Interpreter:" + context.getData()); 
  } 
  
} 
 
public class XmlDomInterpreter implements Interpreter { 
  
  @Override
  public void interpret(Context context) { 
    System.out.println("xml dom Interpreter:" + context.getData()); 
  } 
  
} 
 
/** 
 * 包含解释器之外的一些信息 
 */
public class Context { 
  private String data; 
    
  public String getData() { 
    return data; 
  } 
    
  public void setData(String data) { 
    this.data = data; 
  } 
} 
 
public class Test { 
  public static void main(String[] args) { 
    Context context = new Context(); 
    context.setData("一段xml数据"); 
    new XmlSaxInterpreter().interpret(context); 
    new XmlDomInterpreter().interpret(context); 
  } 
} 

单列设计模式一共有几种实现方式

单列设计模式一共有8种写法:

  • 饿汉式 两种
  • 懒汉式 三种
  • 双重检查
  • 静态内部类
  • 枚举
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值