文章目录
九、设计模式
1. 说一下你熟悉的设计模式?
单例模式:Spring框架中默认将bean设置为单例的,可以极大地提高系统的性能
工厂模式:Spring框架中的工厂模式,就是自己不再主动创建对象,而是让工厂来帮我们创建对象。
代理模式:Spring MVC使用的AOP面向切面编程,就是典型的代理模式的体现
2. 简单工厂和抽象工厂有什么区别?
简单工厂模式:是由一个工厂对象创建产品实例,简单工厂模式的工厂类一般是使用静态方法,通过不同的参数创建不同的对象实例,可以生产结构中的任意产品,不能增加新的产品
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需制定他们具体的类,生产多个系列产品,生产不同产品族的全部产品,不能新增产品,可以新增产品族
3. 观察者设计模式的好处?
- 观察者模式在被观察者和观察者之间建立一个抽象的耦合。被观察者角色所知道的只是一个具体观察者列表,每一个具体观察者都符合一个抽象观察者的接口。被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。
- 观察者模式支持广播通讯。被观察者会向所有的登记过的观察者发出通知
4. 什么是单例模式?用Java写一个单例类。
答:这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
优点:
1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
2、避免对资源的多重占用(比如写文件操作)。
缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。
饿汉式单例
public class Singleton {
private Singleton(){}
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
懒汉式单例
public class Singleton {
private static Singleton instance = null;
private Singleton() {}
public static synchronized Singleton getInstance(){
if (instance == null) instance = new Singleton();
return instance;
}
}
5. 描述适配器设计模式
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式有类适配器模式和对象适配器模式,以及缺省(接口)适配器,三种不同的形式。
6. 描述代理设计模式
代理模式是指给某个对象提供一个代理对象,由代理对象控制对原对象的访问。代理对象可以在调用原对象方法的前后进行其他操作,是对原对象方法的一种增强实现。