spring源码设计模式分析(六)-模板方法模式

简介: spring源码设计模式分析(六)-模板方法模式

模板方法模式(解决一类问题完整逻辑)

看到模板,可能会想到解决问题的一套模板,一个套路,通用的手法,具体的场景里面某个细节点不一样。把很多的方法有逻辑性(有先后顺序)的组织在一起就称之为模板方法模式,里面的抽象方法,必须依靠具体的场景(子类)实现。

在生活中,比如有的男生做饭,有的女生做饭,做饭是有一个套路,先买菜,切菜,再煮饭,然后再吃饭。但是有一个地方不一样,某某喜欢吃辣的,就多放些辣椒,某某喜欢吃咸的,就多放点咸盐。区别就是某个细节点不一样。所以放调料的时候是抽象方法。

在spring中 AbstractFactoryBean 抽象factoryBean对象创建,部分功能留给子类去实现。

遵循了设计模式6大原则中的里氏替换原则,父类出现的地方,子类一定可以出现。

1、首先玩游戏的套路都一样:所以抽象出类

  1. package com.weizhaoyang.template;

  2. /**
  3. * 游戏模板
  4. */
  5. public  abstract classGame{
  6.    abstract void  intialize();
  7.    abstract void  startPlay();
  8.    abstract void  endPlay();
  9. //玩游戏方法
  10. public  final  void  play(){
  11.        //初始化游戏
  12.        intialize();
  13.        //开始游戏
  14.        startPlay();
  15.        //结束游戏
  16.        endPlay();
  17. }
  18. }

2、提供一个足球的游戏

  1. package com.weizhaoyang.template;

  2. publicclassFootballGame extends Game{
  3. @Override
  4. void intialize() {
  5. System.out.println("游戏初始化");
  6. }

  7. @Override
  8. void startPlay() {
  9. System.out.println("游戏开始,用脚踢球");
  10. }

  11. @Override
  12. void endPlay() {
  13. System.out.println("游戏结束");
  14. }
  15. }

3、提供 一个篮球的游戏

  1. package com.weizhaoyang.template;

  2. publicclassBasketBallGame extends  Game{
  3. @Override
  4. void intialize() {
  5. System.out.println("游戏初始化");
  6. }

  7. @Override
  8. void startPlay() {
  9. System.out.println("游戏开始,用手拍球");
  10. }

  11. @Override
  12. void endPlay() {
  13. System.out.println("游戏结束");
  14. }
  15. }

4、提供一个测试类:

  1. package com.weizhaoyang.template;

  2. /**
  3. * 测试类
  4. */
  5. publicclassGameTest{
  6. publicstaticvoid main(String[] args) {
  7. //进行测试
  8. Game game=newFootballGame();
  9.        game.play();
  10. }
  11. }

运行的结果如下:

在上面的FootBallGame或者BasketBallGame这两个类也可以在做一个抽象类,把startPlay方法做为抽象方法,因为可以用力,或者轻力去操作球,所以在框架中有很多抽象类继承抽象类,它就是这种思想,抽象是无场景化的。在上面的例子中,抽象类中有一套的逻辑,而接口是没有的,必须保证所有方法实现。上面的例子football和basketBall还没有具体到某个人。

在框架中用的最多的就是模板方法模式。

相关文章
|
10月前
|
设计模式 算法 Java
设计模式系列教程(08) - 模板方法
设计模式系列教程(08) - 模板方法
40 0
|
10小时前
|
设计模式 Java Spring
spring源码设计模式分析(五)-策略模式
spring源码设计模式分析(五)-策略模式
|
10小时前
|
设计模式 Java 数据库
spring源码设计模式分析(八)-访问者模式
spring源码设计模式分析(八)-访问者模式
|
10小时前
|
设计模式 Java Spring
spring源码设计模式分析-代理设计模式(二)
spring源码设计模式分析-代理设计模式(二)
|
10小时前
|
设计模式 搜索推荐 Java
spring源码设计模式分析(三)
spring源码设计模式分析(三)
|
10小时前
|
设计模式 存储 Java
spring源码设计模式分析(一)
spring源码设计模式分析(一)
|
10小时前
|
消息中间件 设计模式 缓存
spring源码设计模式分析(四)-观察者模式
spring源码设计模式分析(四)-观察者模式
|
4月前
|
设计模式 SQL 算法
【设计模式系列笔记】模板方法模式
模板方法模式是一种行为设计模式,它定义了一个算法的骨架,并允许子类在不改变该算法结构的情况下重新定义算法的某些步骤。这种模式属于行为型模式,它通过将算法的不同部分封装在不同的方法中,从而使子类能够在不改变算法结构的前提下定制算法的某些步骤。
54 0
|
设计模式 算法 安全
深入浅出设计模式 - 模板方法模式
深入浅出设计模式 - 模板方法模式
86 0
深入浅出设计模式 - 模板方法模式
|
设计模式 安全 Java
深入浅出设计模式 - 装饰者模式
深入浅出设计模式 - 装饰者模式
105 0
深入浅出设计模式 - 装饰者模式