Dawn's Blogs

分享技术 记录成长

0%

Easy搞定Golang设计模式 (6) 行为型模式之模板方法模式 命令模式

模板方法模式

模板方法就是定义一个模板方法和组成模板方法的许多抽象子方法,通过重写抽象子方法来自定义模板方法的执行过程。模板方法模式中的角色和职责如下:

  • 抽象类(AbstractClass):在抽象类中定义了一系列基本操作,这些基本操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在其子类中可以重定义或实现这些步骤。同时,在抽象类中实现了一个模板方法,用于定义一个算法的框架。
  • 具体子类(ConcreteClass):抽象类的子类,用于实现在父类中声明的抽象基本操作以完成子类特定算法的步骤,也可以覆盖在父类中已经实现的具体基本操作。

image-20230424220043836

命令模式

命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。

命令模式中的角色和职责如下:

  • 抽象命令类(Command):抽象命令类一般是一个抽象类或接口,在其中声明了用于执行请求的 execute 方法,通过这些方法可以调用请求接收者的相关操作
  • 具体命令类(ConcreteCommand):具体命令类是抽象命令类的子类,实现了在抽象命令类中声明的方法,他绑定了命令接收者的具体操作。在实现 execute 方法时,将调用接收者的相关操作
  • 调用者(Invoker):调用者即请求的发出者,它应该只和抽象命令发生关联关系,而不关心具体是哪一个接收者。
  • 接收者(Receiver):接收者执行与请求相关的操作,它具体实现对请求的业务处理

image-20230424222003486