# 从同事重构代码中学到的知识

# 代码中使用了@PostConstruct注解

@PostConstruct是javax.annotation.PostConstruct, 从Java EE5规范开始加入的注解, 同时加入的还有@PreDestroy

大家都比较清楚servlet的运行, 构造方法后就会执行init().而@PostConstruct是在构造方法之后, init()方法之前执行. 总结如下:

  1. @PostConstruct的执行顺序, 在构造方法之后.
  2. 在spring中, @Autowired同样在构造方法之后执行, 此时的顺序是: Construct > @Autowired > @PostConstruct

# 责任链模式

1. 理解 首先可以看到责任链中的字, 这告诉了你这种模式是链式的, 所有的具体责任对象共用一个事件, 并且会在某一个具体责任对象处终止. 同时责任对象的顺序是可以随意设定的.

2. 特点

1. 链式结构
2. 调用方不清楚会在哪一处进行处理
3. 最终只有一处会处理并终止

3. 代码示意 Java诠释责任链模式需要3类对象:

1. 
2. 

4. 理解 首先要了解清楚:

  1. 抽象类

可以将公共的内容写到自己这里, 将与自己不同的内容写入到子类中.

既然是链, 就有链共同的特性, 自身包含了指向下一个节点的方式. 因此, 在抽象方法中需要定义一个next(), 用于指向下一个节点.

  1. 递归

责任链模式中存在递归, 因为是链式调用, 调用深入后, 一定会逆向返回.

# 模板模式

# 策略模式

# @FunctionalInterface

# 函数式编程

lambad表达式就属于函数式编程, 而函数式接口中规定只能有一个抽象方法定义, 也正是符合lambda的使用.

# Q&A

  1. 为什么接口中可以存在default修饰的方法
修改于: 8/11/2022, 3:17:56 PM