模板方法模式(Template Method Pattern):视频播放应用实战案例分析

127 篇文章 0 订阅
32 篇文章 0 订阅

image.png

肖哥弹架构 跟大家“弹弹” 业务中设计模式的使用,需要代码关注

欢迎 点赞,点赞,点赞。

关注公号Solomon肖哥弹架构获取更多精彩内容

在视频播放应用中,不同的视频类型(如直播、点播、短视频)虽然播放流程相似,但具体的加载和播放策略可能有所不同。

2. 为什么要使用模板方法设计模式

模板方法模式允许定义一个业务行为的框架,将某些步骤的实现延迟到子类中。这使得子类可以在不改变行为结构的情况下,重新定义行为的特定步骤。

3. 标准模板方法设计模式图

4. 业务模板方法设计模式图

5. 业务代码参考
    // 视频播放器抽象类
    abstract class VideoPlayer {
        // 模板方法:定义播放视频的算法框架
        public final void play() {
            loadVideo();
            playVideo();
            System.out.println("视频播放完成");
        }
        
        // 抽象方法:由子类实现具体的加载视频逻辑
        public abstract void loadVideo();
        
        // 钩子方法:子类可以扩展播放视频前的准备工作
        protected void playVideo() {
            System.out.println("开始播放视频");
        }
    }

    // 直播视频播放器
    class LiveVideoPlayer extends VideoPlayer {
        @Override
        public void loadVideo() {
            // 加载直播视频资源
            System.out.println("加载直播视频资源");
        }
        
        @Override
        protected void playVideo() {
            // 直播视频播放逻辑
            System.out.println("直播视频开始播放");
        }
    }

    // 点播视频播放器
    class VODPlayer extends VideoPlayer {
        @Override
        public void loadVideo() {
            // 加载点播视频资源
            System.out.println("加载点播视频资源");
        }
        
        @Override
        protected void playVideo() {
            // 点播视频播放逻辑
            System.out.println("点播视频开始播放");
        }
    }

    // 短视频播放器
    class ShortVideoPlayer extends VideoPlayer {
        @Override
        public void loadVideo() {
            // 加载短视频资源
            System.out.println("加载短视频资源");
        }
        
        @Override
        protected void playVideo() {
            // 短视频播放逻辑
            System.out.println("短视频开始播放");
        }
    }

    // 客户端使用
    class VideoApp {
        public static void main(String[] args) {
            VideoPlayer livePlayer = new LiveVideoPlayer();
            livePlayer.play();
            
            VideoPlayer vodPlayer = new VODPlayer();
            vodPlayer.play();
            
            VideoPlayer shortPlayer = new ShortVideoPlayer();
            shortPlayer.play();
        }
    }
6. 使用模板方法设计模式的好处
  • 行为结构一致性:确保所有视频类型的播放流程保持一致。
  • 扩展性:新增视频类型时,只需继承VideoPlayer类并实现相应的加载逻辑。
7. 其他使用模板方法设计模式场景参考
  • 搜索引擎:不同类型内容(如网页、图片、视频)的搜索算法框架一致,但索引和检索策略可能不同。
  • 图形编辑器:不同格式(如JPEG、PNG、GIF)的图像保存流程相似,但具体的编码实现不同。
8. 可参考开源框架
  • JUnit:使用模板方法模式来执行测试用例的固定流程。

总结

模板方法模式通过定义算法的框架,允许子类在不改变算法结构的前提下,重新定义算法的特定步骤,提高了代码的复用性和可扩展性。

历史热点文章

  • 33
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Solomon_肖哥弹架构

你的欣赏就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值