常用的设计模式及应用场景
(1)考察目标
考官主要是对一些常用设计模式和代码抽取优化能力的考核,问题可能涉及6大设计原则及23种设计模式。
(2)题目分析
比较熟悉的有:
单例模式:
保证一个类仅有一个实例,并提供一个全局访问点,比如一些配置文件或者管理类可以设计为单例,我们常用的线程池也是单例的。
模板方法:
在定义好的算法骨架下,允许子类为一个或多个步骤提供实现,一次性实现算法的不变部分,将可变部分留给子类实现,当子类实现代码逻辑雷同时,可以使用此设计模式。
工厂模式:创建对象需要大量的重复代码时,通过子类实现方法来创建对象。如Spring中通过工厂模式将创建对象的任务交给容器管理。
建造者模式:
讲复杂对象的构建和表示分离,适用于流程固定,但是顺序不一定固定的场景。如需要给一个对象多次给不同的属性赋值,可以使用链式调用传参,最后生成对象。
另外,如策略模式,观察者模式,模板方法模式,foreach中的迭代器模式,spring 中ASM的访问者模式,动态代理等都有一些了解。
(3)应用场景
JavaEE应用中,Spring用于创建IOC容器的监听器就是基于观察者模式的。
Spring中获取FileSystemResource和ClassPathResource等功能雷同的类时使用模板方法。
单例模式:包含懒汉饿汉式以及不同的变种,工厂类设计模式一般也设计为单例。项目中的一些配置,或者引入外部的sdk需要创建管理类,或者封装自己的框架时,需要用到单例
工厂方法:在编码时不能预见需要创建哪种类的实例。
(4)总结
本题主要考察的是:
1)常用设计模式
2)代码抽取优化能力