0%

命令模式

将一个请求封装为一个对象,使用不同的请求对客户端进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作

核心概念

  • Command 命令接口
  • ConcreteCommand 命令实现,通常会持有接收者,并调用接收者的功能来完成命令要执行的操作
  • Receiver 接收者,真正执行命令的对象,实现命令要求的相应功能
  • Invoker 要求命令对象执行请求,通常会持有命令对象,客户端触发命令的地方
阅读全文 »

原型模式

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,其有两方面的功能:一是通过克隆来创建新的对象实例;二是为克隆出来的新的对象实例复制实例属性的值

实现

  1. 实现Cloneable接口

实现Cloneable接口,该接口没有需要实现的方法,只是一个标识接口,然后在该类中新加一个clone方法来进行克隆

Cloneable接口的作用是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法,只有实现了这个接口的类才可以被拷贝,否则在运行时会抛出CloneNotSupportedException异常

阅读全文 »

建造者模式

也称为生成器模式,将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示

核心概念

  • Builder 建造者接口,定义创建一个Product对象所需要的各个部件的操作
  • ConcreteBuilder 具体的构造者实现,实现各个部件的创建,并负责组装Product对象的各个部件,同时还提供一个让用户获取组装完成后的产品对象的方法
  • Director 指导者,用来使用Builder接口,以一个统一的过程来构建所需的Product对象
  • Product 产品,表示被建造者构建的复杂对象
阅读全文 »

模板方法模式

定义一个操作中的算法的框架,将一些步骤在子类中实现,使得子类可以不改变一个算法的结构即可自定义该算法的某些特定步骤

在该模式中的抽象模板有三种方法:

  • 抽象方法:父类中只声明不实现,由子类实现,在模板方法中被调用
  • 模板方法:一个算法框架,实现对抽象方法的调度,完成固定的逻辑,对于一些不允许被改变的模板方法,一般都加上final关键字
  • 钩子方法:由抽象类声明并实现,子类可以去扩展
阅读全文 »

Runner使用

如果需要在SpringApplication启动后执行一些逻辑,可以使用ApplicationRunner或CommandLineRunner接口,这两个接口都是只有一个run方法

1
2
3
4
5
public interface ApplicationRunner {

void run(ApplicationArguments args) throws Exception;

}
1
2
3
4
5
6
public interface CommandLineRunner {


void run(String... args) throws Exception;

}
阅读全文 »