设计模式

1. 为什么需要使用设计模式

    使用设计模式可以重构整体架构代码,提高代码复用性、拓展性、减少代码冗余。java高级工程师必备技能

2.什么时候需要使用到设计模式重构呢

3.什么是策略模式(ClassPathXmlContext,innitail一些初始化Strategy)

    策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断的问题

4.责任链模式,如何保证顺序的问题?

    使用链表数据结构

5.责任链设计模式如何实现整个链执行

    只要获取第一个Handle 所有整个链都会执行

6.工厂模式,创建对象交给工厂

7.装饰者模式(super.service()控制执行顺序)

8.代理模式:

    1.什么是代理模式:为其他对象提供一种代理以控制对这个对象的访问

    2.为什么使用代理模式:中介隔离:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理对象可以在客户类和委托对象之间起到中介作用,其特征是代理类和委托类实现相同的接口。

    3.代理模式的实现方式: 静态代理和动态代理。静态代理是由程序员创建或工具生成代理类的源码,在编译代理类。所谓静态代理也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托代理类

        的关系在运行前就确  定了。

                  一句话,自己手写代理类就是静态代理

                  动态代理:通过java反射或者字节码技术自动的帮助我们在运行的时候创建这个代理类对象

                 JDK动态代理:为什么要通过父类接收,JDK动态生成的代理都是实现接口的形式,所有代理类必须要实现接口

                  CGLIB动态代理:Cglib是一个强大的,高性能,高质量的代码生成类库。他可以在运行期拓展JAVA类与实现JAVA接口。其底层实现是通过ASM字节码处理框架来转换字节码并生成新的类。大部分功能

                  实际上是ASM提供的,Cglib只是封装了ASM,简化ASM操作,实现了运行期生成新的class。

                  JDK动态代理与 CGLIB动态代理的区别:

9.观察者模式:subject,observer//生产者,主题,消费者

    纯手写java观察者模式,JDK观察者模式源码分析,使用JDK观察者群发消息

10.外观模式(门面模式)别名也叫包装模式  ---使用一个接口封装复杂的业务逻辑流程,让客户端使用起来更加简单&&&&状态模式