设计模式中的面试题
程序员文章站
2024-03-17 17:32:46
...
设计模式面试题
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种写法:
- 饿汉式 两种
- 懒汉式 三种
- 双重检查
- 静态内部类
- 枚举
推荐阅读
-
设计模式中的面试题
-
剑指OFFER 面试题15(二进制):二进制中1的个数 (JAVA)
-
Javascript设计模式学习笔记(1) 创建类的时候需要注意的一些概念
-
Rails 的发现/收藏 博客分类: Web RailsRedisSVNMySQL设计模式
-
装饰者模式--除继承外的另一种扩展方式 博客分类: 设计模式 android设计模式装饰者模式java.io
-
【转载】Web应用的缓存设计模式
-
设计模式之单例模式三(更好的实现方式) 博客分类: 设计模式 设计模式单例模式
-
【转载】Web应用的缓存设计模式
-
设计模式之单例模式三(更好的实现方式) 博客分类: 设计模式 设计模式单例模式
-
程序员面试题:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值