# 从同事重构代码中学到的知识
# 代码中使用了@PostConstruct注解
@PostConstruct是javax.annotation.PostConstruct, 从Java EE5规范开始加入的注解, 同时加入的还有@PreDestroy
大家都比较清楚servlet的运行, 构造方法后就会执行init().而@PostConstruct是在构造方法之后, init()方法之前执行. 总结如下:
- @PostConstruct的执行顺序, 在构造方法之后.
- 在spring中, @Autowired同样在构造方法之后执行, 此时的顺序是: Construct > @Autowired > @PostConstruct
# 责任链模式
1. 理解
首先可以看到责任链中的链字, 这告诉了你这种模式是链式的, 所有的具体责任对象共用一个事件, 并且会在某一个具体责任对象处终止.
同时责任对象的顺序是可以随意设定的.
2. 特点
1. 链式结构
2. 调用方不清楚会在哪一处进行处理
3. 最终只有一处会处理并终止
3. 代码示意 Java诠释责任链模式需要3类对象:
1.
2.
4. 理解 首先要了解清楚:
- 抽象类
可以将公共的内容写到自己这里, 将与自己不同的内容写入到子类中.
- 链
既然是链, 就有链共同的特性, 自身包含了指向下一个节点的方式. 因此, 在抽象方法中需要定义一个next(), 用于指向下一个节点.
- 递归
责任链模式中存在递归, 因为是链式调用, 调用深入后, 一定会逆向返回.
# 模板模式
# 策略模式
# @FunctionalInterface
# 函数式编程
lambad表达式就属于函数式编程, 而函数式接口中规定只能有一个抽象方法定义, 也正是符合lambda的使用.
# Q&A
- 为什么接口中可以存在default修饰的方法