模板模式

定义:

定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类不改变算法的结构即可重复定义算法的某些特点步骤

案例(玩游戏)

  1. AbstractClass抽象类,定义算法结构,还可以提供通用实现
//抽象游戏类
public abstract class Game {
    abstract  void  login();
    abstract  void startPlay();
    abstract  void endPlay();
    //声明为final 防止子类重写
    public final void play(){
        System.out.print("开机");
        login();
        startPlay();
        endPlay();
        System.out.print("关机");

    }
}
  1. ConcreteClass具体实现类 选择性的重定义算法中某些特定步
public class LoLGame extends Game {
    @Override
    void login() {
        System.out.print("登录");
    }

    @Override
    void startPlay() {
        System.out.print("开始游戏");
    }

    @Override
    void endPlay() {
        System.out.print("结束游戏");

    }
}

  1. Client 调用
public class MyClass {
    public static void main(String[] args){
        Game game=new LoLGame();
        game.play();
    }
}
开机
登录
开始游戏
结束游戏
关机

优缺点:
优点:
1、封装不变部分,扩展可变部分。
2、提取公共代码,便于维护。
3、行为由父类控制,子类实现。
缺点:
1、每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
使用场景:
1、有多个子类共有的方法,且逻辑相同 重要的、复杂的方法,可以考虑作为模板方法。
注意事项:
为防止恶意操作,一般模板方法都加上 final 关键词

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、概念介绍模版方法模式的结构 定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即...
    William8阅读 440评论 0 1
  • 1 场景问题# 1.1 登录控制## 几乎所有的应用系统,都需要系统登录控制的功能,有些系统甚至有多个登录控制的功...
    七寸知架构阅读 1,999评论 3 53
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,908评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,764评论 18 399
  • 发现文字如何精彩,都不及思绪的万分之一。 每毫秒不断的变化,连发出想法的人都来不及跟上速度,唯有把新的想法取而代之...
    半个月亮夭折了阅读 396评论 0 0