java代码中模板方法简介及示例说明

乔欣 Java教程 发布时间:2023-01-30 10:47:14 阅读数:10271 1
下文笔者讲述设计模式中模板方法的简介说明,如下所示

模板方法简介

  模板方法设计模式:
       是基于继承的设计模式
	    模板方法设计模式只允许子类别为一个或多个步骤提供实现方式

模板方法结构

 
模板方法模式
     由两部分结构组成
    抽象父类和具体的实现子类
      a.抽象父类:封装子类框架,如:一些公共方法以及封装子类中所有重写方法的执行顺序
      b.具体实现子类:继承整个抽象类,选择性的重写父类方法
设计模式之模板方法的示例简介说明

模板方法的应用场景

  1.多个子类有共有的方法,且处理逻辑基本相同
   2.重要、复杂的算法
       可以把核心算法设计为模板方法
	     相关的细节功能则由各个子类自行实现
   3.重构时,模板方法设计经常被用到,
        把相同的代码抽取到父类中,
		然后通过构造函数约束其行为

模板方法示例

Controller 类

@RestController
@RequestMapping("/back")
public class CallBackController {
 
    @Autowired
    @Qualifier("lt")
    private CallBackService ltService;
 
    @Autowired
    @Qualifier("hw")
    private CallBackService hwService;
 
    @PostMapping("/hw")
    public void hw(@RequestBody CallInfo req) {
        hwService.execute(req);
    }
 
    @PostMapping("/lt")
    public void lt(@RequestBody CallInfo req) {
        ltService.execute(req);
    }
 
}

Service层

public abstract class CallBackService {
 
    // 算法框架 这里只列举两个步骤
    public void execute(CallInfo req) {
        // 1.校验数据
        this.validate(req);
        // 2.执行回调
        this.callBack(req);
        System.out.println(req.getSource() + "执行完毕!");
    }
 
    protected abstract void validate(CallInfo req);
 
    protected abstract void callBack(CallInfo dto);
 
}

实现类
@Service("hw")
public class HwCallBackImpl extends CallBackService {
    @Override
    protected void validate(CallInfo req) {
        System.out.println("华为参数校验通过");
    }
 
    @Override
    protected void callBack(CallInfo dto) {
        System.out.println("华为回调完毕!");
    }
}
 
//在子类中可以增加一些子类特有的行为,灵活扩张
----------------------------------------------------------
    
@Service("lt")
public class LtCallBackImpl extends CallBackService {
 
    @Override
    protected void validate(CallInfo req) {
        System.out.println("联通参数校验通过");
    }
 
    @Override
    protected void callBack(CallInfo dto) {
        System.out.println("联通回调完毕!");
    }
}

模板方法的优缺点

模板方法的优点:
   1.封装代码中不变的部分, 
      使代码可灵活扩展可变部分
	  将不变的信息封装到父类中,子类进行相应的实现 
   2.行为的执行逻辑由父类来控制, 子类来实现.
   3.抽象类中是公共代码框架, 便于维护----使用抽象类定义执行模板,子类进行相应的实现

模板方法的缺点:
   1.算法的框架需要改变的时候, 需要修改抽象类
   2.按照设计习惯, 抽象类负责声明最抽象、最一般的事务属性和方法
       实现类负责完成具体的事务属性和方法
	   但是模板方法设计正好相反,子类运行的结果影响了父类的结果
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202301/5577.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者