设计模式面试相关知识点

1.设计模式一共有23种,有行为、结构、创建三种类型,常用的设计模式有单例模式,工厂模式,代理模式,责任链模式,装饰模式,策略模式等

2.策略模式:主要解决多重if判断的问题,存在共同行为但不同的策略交给不同子类实现。

3.模板方法:提供共同的骨架,相同代码放入父类,不同代码在子类实现,一般和策略模式一起使用。

4.责任链模式:客户端发出一个请求会将整个链对象顺序的执行一遍,使用场景:过滤器、工作流

5.装饰模式:不影响当前代码实现增强,使用场景:多级缓存设计、IO流

6.代理模式:在目标方法之前和之后实现处理,使用场景:RPC远程调用,事务、日志、权限控制。

7.代理分为①静态代理:需要自己编写代理类②使用反射或者字节码技术生成代理类。

8.动态代理实现方式:①JDK动态代理:采用反射机制回调,必须依赖于接口②CGLIB:采用字节码技术调用,采用重写形式。相对比来说jdk动态代理比cglib广泛,但是cglib效率比jdk代理高,使用jdk广泛的原因:动态代理是java原生就支持,其次我们项目中大多数都是采用面向接口编程。

9.Spring中如何采用jdk和cglib代理呢?需要被代理的类是否有实现过接口,如果实现了接口就采用Jdk,没有的情况下就采用cglib。

10.观察者模式:实现对代码的监听,使用场景:配置中心、MQ、zookeeper

11.单例模式:在同一个JVM中只能存在一个实例,使用场景:spring bean,servlet等

12.七种单例模式:懒汉式、饿汉式、枚举、内部类、双重校验、静态内部类、懒汉式(线程安全)

13.使用反射、序列化可以破坏一个单例,但是枚举不能被破解,相对来说是最安全的一种方式。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容