设计模式 - 行为型 - 模板模式学习

现象:
设计模式 - 行为型 - 模板模式学习

介绍:
模板模式的设计思路,在抽象类中定义抽象方法的执行顺序,
并将抽象方法设定为只有子类实现,但不提供独立访问的方法 只能通过已经被安排好的定义方法去执行

可以控制整套逻辑的执行顺序和统⼀的输⼊、输出
对于实现方只需要关心好自己的子业务逻辑即可编写即可

如例子中的银行 每个银行只关心自己的实际逻辑 执行循序已经被安排的明明白白

方法:

一:首先定义基础执行数据模型和此业务执行具体执行数据模型

  1. 定义基础执行数据模型 可抽取共有属性
    设计模式 - 行为型 - 模板模式学习_第1张图片
    2.定义业务数据执行数据模型
    设计模式 - 行为型 - 模板模式学习_第2张图片

二:模板模式核心 定义操作流程与业务接口提供给继承类实现

1.定义设计模式的灵魂
外部可访问 handle方法执行银行办理业务操作
在handle定义了具体去银行执行业务的循序
提供三个具体抽象方法给继承子类去实现 取号、办理、评价
设计模式 - 行为型 - 模板模式学习_第3张图片

三:测试使用

此处直接使用new对象来控制
实际业务中可借助spring容器注入方式来控制
设计模式 - 行为型 - 模板模式学习_第4张图片

实例使用

模板模式结合策略模式
模拟获取第三方信息接口 如获取微信、抖音、百度的第三方信息

一:定义请求与返回model对象

1.首先定义请求对象 参数可根据业务扩展
设计模式 - 行为型 - 模板模式学习_第5张图片
2.定义返回对象参数 参数根据业务扩展
设计模式 - 行为型 - 模板模式学习_第6张图片

3.定义此接口全局对象包括请求与返回

设计模式 - 行为型 - 模板模式学习_第7张图片

二:定义获取信息接口 与 接口容器

1.定义获取第三方信息的接口 参数为全局对象 携带请求参数与返回体
设计模式 - 行为型 - 模板模式学习_第8张图片
2.定义容器 容器注入Spring容器 存放具体实现的map 类型type作为key 具体实现作为value
设计模式 - 行为型 - 模板模式学习_第9张图片

三.定义抽象类与具体获取信息的实现

1.定义抽象类 实现接口 使用@PostConstruct 子类初始化的时候 将子类具体实现注入到容器的map里面
getInfo定义获取第三方信息的一系列模板操作流程
具体实现doHandle方法给每个子类自己实现
设计模式 - 行为型 - 模板模式学习_第10张图片
2.定义具体业务实现 百度、抖音、微信信息获取
此处未写真实获取方法
设计模式 - 行为型 - 模板模式学习_第11张图片
设计模式 - 行为型 - 模板模式学习_第12张图片
设计模式 - 行为型 - 模板模式学习_第13张图片
四:提供对外调用方法
这里为了测试将参数写死了获取抖音喝微信的信息
正常业务应该接受外界调用参数转成我们的TemplateModel对象调用
然后获取TemplateMpodel的response 转成接口的返回vo进行返回

设计模式 - 行为型 - 模板模式学习_第14张图片
五:单元测试调用与结果展示
设计模式 - 行为型 - 模板模式学习_第15张图片

你可能感兴趣的:(设计模式,设计模式,学习,java)