JavaEE-面试-说说设计模式
设计模式
1,设计模式,在面试的时候可能被问到,一般出现在面试的前几个问题,同学们还是能够回答,但是想要回答的更好,这篇文章给你一些参考。
2,很多设计模式我们没有实际的编写经验,但是哪些设计模式在哪些类中哪些框架中被用到,能说出来给人感觉很好。
3,具体设计模式的代码,我这里就没有去贴出来了。
设计模式常见问题
1、 说说你所知道的设计模式。
2、 说说常见的设计模式。
3、 写一个单例。
4、 写一个动态代理。
设计模式的回答思路
一共有23种设计模式,同学们也不可能记住所有的设计模式,而且很多设计模式确实也少用。所以,只需要记住几个常用的,并且和实际框架情况结合起来更好。
常用设计模式
单例(singleInstance)、工厂方法(factory method)、抽象工厂模式(Abstract Factory)、代理(proxy)、装饰(decorator)、建造者(builder)、观察者(observer)、门面(facade)。
面试的时候能说出这几个,够用了。
单例(singleInstance)
饿汉式、懒汉式、双重检查加锁
不要只是知道饿汉式和懒汉式奥。
工厂(factory method)
简单工厂、多方法工厂方法、静态工厂
工厂模式就非常常见了
抽象工厂(abstract factory)
抽象工厂模式,虽然代码多了,但是符合开闭原则。
代理(proxy)
静态代理
动态代理
Spring AOP的底层实现动态代理。
装饰(decorator)
不用继承一个类可以对一个类的方法增强,容易和静态代理设计模式混淆。
java IO的很多类都是用到了装饰设计模式,比如典型的就是BufferedReader,BufferedReader是FileReader方法增强版本,将FileReader进行了装饰。
BufferedReaderbufReader = new BufferedReader(newFileReader("xxx"));
建造者(builder)
对创建过程的封装。
StringBuilder就是一个例子。通过不停的调用apend方法最后调用build方法。
观察者(observer)
发布-订阅
一对多的通知方案。
activeMq有发布订阅的概念,也有一方发起通知,多方收到结果的感觉。
门面(facade)
封装细节,只需关心核心即可。
SecurityManager是Shiro架构的心脏,典型的Façade模式。
参考资料
以下的资料,经过我的刷选,质量还是挺高的,可以参考阅读。