面试-设计模式
策略模式
定义了一组算法,分别封装起来,这些算法直接可以相互替换
设计模式的开闭原则:对修改关闭,对扩展开放
装饰模式
将某种算法作为一个装饰品添加到对象身上,同时可以自由穿戴更换装饰品
两个主要的角色:装饰器和被装饰的对象
装饰器和被装饰的对象要实现同一接口
(下面是装饰器的父类
观察者模式
对象的一对多关系,当一个对象的状态发生改变时,他所有的依赖者都会收到通知并自动更新,观察者模式也叫订阅发布模式
两种模式:观察者和被观察者(或者叫做订阅者和发布者)报社就是被观察者 订报纸的客户就是观察者
被观察者要保存所有观察者的列表,这样的话才能够通知观察者 遍历列表挨个调用方法
单例模式
确保一个类只有一个实例化对象,并且提供一个可以被全局访问的对象
(双重检测)
工厂模式
不需要开发者手动创建对象,而是提供一个容器,开发者需要对象的时候只需要从中去获取
适配器模式
将一个接口转换成用户期望的另一个接口
解决的是类之间接口不兼容的问题
代理模式
实现目标对象和业务方法的解耦合
业务代码和非业务代码分离
代理 委托 实现同一个接口
模板方法模式
提供了一个算法模板,将各个类中相同的代码统一提取出来,封装到父类中,形成一个模板,子类可以直接复用代码
(抽象方法+定义过程cook)
servlet使用模板方法模式
责任链模式
链式调用的形式
责任指的是对请求的某些操作