设计模式
你能举例几个常见的设计模式
你在设计一个工厂的包的时候会遵循哪些原则?
你能列举一个使用了Visitor/Decorator模式的开源项目/库吗?
你在编码时最常用的设计模式有哪些?在什么场景下用?
如何实现一个单例?
代理模式(动态代理)
单例模式(懒汉模式,恶汉模式,并发初始化如何解决,volatile与lock的使用)
JDK源码里面都有些什么让你印象深刻的设计模式使用,举例看看
spring都用到了哪些设计模式
答: * 工厂模式:简单工厂,工厂方法 * 单例模式 spring下默认的bean都是singleton模式
-
适配器模式 spring的aop中,使用Advice来增强被代理类的功能
-
包装器(Decorator) spring的applicationContext中配置所有的dataSource
-
代理(Proxy) 为其他对象提供一种代理以控制对这个对象的访问 spring的Proxy模式在aop中体现,比如JdkDynamicAopProxy和Cglib2AopProxy
-
观察者(Observer) 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 spring中Observer模式常用的地方是listener的实现。如ApplicationListener
-
策略(Strategy) 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化 spring中在实例化对象的时候用到Strategy模式
-
模板方法(Template Method) 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中