10.12面试题

代理模式

为什么需要代理模式?

1.中介隔离

客户类不想或者不能直接引用委托对象,需要使用代理类作为中介,需要代理类和委托对象都实现同一接口

2.满足开闭原则

若客户类需要委托对象新增某些功能,就需要代理类在调用委托对象时,对其进行功能前后织入增强,例如增加日志,缓存等功能;

代理模式分类

静态代理:需要我们在编译前自己写好代理类代码

动态代理:在运行时使用反射机制动态获取代理类

JDK动态代理

对于实现接口的委托对象,使用JDK动态代理

CGLib动态代理

底层使用字节码文件,使用继承,所创建的代理类继承委托类,在代理类也就是子类中拦截父类所有的方法调用,并顺势对目标方法织入增强;

工厂设计模式

概念:

工厂设计模式就是把创建对象的过程交给工厂来实现,自己创建对象每次都需要new,一旦要批量切换对象,需要一个个改,但是如果使用工厂设计模式,只用和工厂打交道,可以将代码和创建对象解耦,所以工厂设计模式的核心就是解耦

简单工厂模式:

一个工厂类可以生产多种产品,例如宝马工厂,可以生产多种型号的宝马车

缺点:每次增加工厂所能产生的产品时,都要修改工厂类,违反开闭原则

工厂方法:

遵循开闭原则,工厂类都在一个工厂接口下,产品类也都在一个产品接口下。

每次要增加新的产品时,就在工厂接口下新建一个新的工厂类,用来生成新的产品类;

缺点:每次增加新产品都要新建一个新的共厂类和产品类

抽象工厂:

围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂

抽象工厂更像是一条多产品的生产线,这一组产品相似或者有相对的关系

相关推荐
qq_三哥啊5 天前
【mitmproxy】通过 mitmproxy 的HTTP代理模式获取 OpenCode 发起的 AI API 请求的详细信息
网络·http·代理模式
AI人工智能+电脑小能手6 天前
【大白话说Java面试题】【Java基础篇】第30题:JDK动态代理和CGLIB动态代理有什么区别
java·开发语言·后端·面试·代理模式
AI人工智能+电脑小能手8 天前
【大白话说Java面试题】【Java基础篇】第29题:静态代理和动态代理的区别是什么
java·开发语言·后端·面试·代理模式
qq_三哥啊9 天前
【mitmproxy】提取 OpenCode 的 API 接口
网络·代理模式
qq_三哥啊9 天前
【mitmproxy】通过 mitmproxy 的本地捕获代理模式获取 OpenCode 发起的 AI API 请求的详细信息
网络·系统安全·代理模式
fengfuyao98512 天前
MATLAB实现自适应动态规划(ADP)方法
matlab·动态规划·代理模式
geovindu15 天前
go: Proxy Pattern
开发语言·后端·设计模式·golang·代理模式
我爱cope19 天前
【从0开始学设计模式-12| 代理模式】
设计模式·代理模式
两年半的个人练习生^_^20 天前
每日一学:设计模式之代理模式
java·设计模式·代理模式
天若有情67321 天前
用动态规划思路,一步一步实现响应式数据(从本质到落地)
算法·动态规划·代理模式