1、模板方法模式
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,如JdbcTemplate
2、代理
spring的Proxy模式在aop中有体现
3、观察者
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
spring中Observer模式常用的地方是listener的实现。如ApplicationListener。
4、适配器(Adapter )
MethodBeforeAdviceAdapter类
5、策略模式
使用了java的继承和多态
案例1:加减法计算器,定义一个计算类接口,加法和减法类都实现它,加的时候传入加法对象。
案例2:导出excel,pdf,word时,分别创建不同的对象
简单理解:执行多个事情时,创建多个对象
6、单例模式
解决一个全局使用的类频繁的创建与销毁
7、工厂模式
分为三种:简单工厂,工厂方法,抽象工厂
根据“需求”生产“产品”,解耦“需求”“工厂”和“产品”。
简单工厂:通过构造时传入的标识来生产产品,不同产品都在同一个工厂中生产,每新增加一种产品,需要改工厂类,来判断,这种判断会随着产品的增加而增加,给扩展和维护带来麻烦
简单工厂项目案例:根据传入的 不同(比如1对应支付流水,2 对应订单流水),生成不同类型的流水号
工厂方法:(使一个类的使用延迟到子类)
其中的工厂类根据传入的A.class类型,反射出实例。
产品接口,产品类A,产品类B,工厂类可以生成不同的产品类对象,如果要随着产品的增加而增加,工厂类不变,只需新增一个产品类C即可。
项目案例:邮件服务器,有三种协议,POP3,IMAP,HTTP,把这三种做完产品类,在定义个工厂方法
抽象工厂:一个工厂生产多个产品,它们是一个产品族,不同的产品族的产品派生于不同的抽象产品