【设计模式】模板方法模式

模板方法模式

1. 什么是模板方法

模板方法模式:定义一个操作中的算法骨架(父类),而将一些步骤延迟到子类中。

模板方法使得子类可以不改变一个算法的结构来重定义该算法的

2. 什么时候使用模板方法

实现一些操作时,整体步骤很固定,但是呢。就是其中一小部分需要改变,这时候可以使用模板方法模式,将容易变的部分抽象出来,供子类实现。

3. 实际开发中应用场景哪里用到了模板方法

其实很多框架中都有用到了模板方法模式

例如:数据库访问的封装、Junit单元测试、servlet中关于doGet/doPost方法的调用等等

4. 现实生活中的模板方法

例如:

去餐厅吃饭,餐厅给我们提供了一个模板就是:看菜单,点菜,吃饭,付款,走人

(这里 "点菜和付款" 是不确定的由子类来完成的,其他的则是一个模板。)

5.代码实现模板方法模式

先定义一个模板。把模板中的点菜和付款,让子类来实现。

java 复制代码
package com.lijie;

//模板方法
public abstract class RestaurantTemplate {

	// 1.看菜单
	public void menu() {
		System.out.println("看菜单");
	}

	// 2.点菜业务
	abstract void spotMenu();

	// 3.吃饭业务
	public void havingDinner(){ System.out.println("吃饭"); }

	// 3.付款业务
	abstract void payment();

	// 3.走人
	public void GoR() { System.out.println("走人"); }

	//模板通用结构
	public void process(){
		menu();
		spotMenu();
		havingDinner();
		payment();
		GoR();
	}
}
  1. 具体的模板方法子类 1
java 复制代码
package com.lijie;

public class RestaurantGinsengImpl extends RestaurantTemplate {

    void spotMenu() {
        System.out.println("人参");
    }

    void payment() {
        System.out.println("5快");
    }
}
  1. 具体的模板方法子类 2
java 复制代码
package com.lijie;

public class RestaurantLobsterImpl  extends RestaurantTemplate  {

    void spotMenu() {
        System.out.println("龙虾");
    }

    void payment() {
        System.out.println("50块");
    }
}
  1. 客户端测试
java 复制代码
package com.lijie;

public class Client {

    public static void main(String[] args) {
        //调用第一个模板实例
        RestaurantTemplate restaurantTemplate = new RestaurantGinsengImpl();
        restaurantTemplate.process();
    }
}
相关推荐
We་ct5 小时前
JS手撕:函数进阶 & 设计模式解析
开发语言·前端·javascript·设计模式·面试·前端框架
冷小鱼7 小时前
设计模式全景指南:23种模式深度解析与Python实现
设计模式
楼田莉子7 小时前
设计模式:创建型设计模式简介
服务器·开发语言·c++·设计模式
UrSpecial7 小时前
设计模式:观察者模式
观察者模式·设计模式
zhaoshuzhaoshu8 小时前
设计模式之结构型设计模式详解
python·设计模式
倒流时光三十年8 小时前
重学设计模式 之 流式 Builder 模式(Fluent Builder)
设计模式·流式 builder·fluent builder
IT枫斗者8 小时前
AI Agent 设计模式全景解析:从单体智能到分布式协作的架构演进
人工智能·redis·分布式·算法·spring·缓存·设计模式
UXbot1 天前
AI原型设计工具评测:从创意到交互式Demo,5款产品全面解析
前端·ui·设计模式·ai·ai编程·原型模式
橘子编程1 天前
GoF 23 种设计模式完整知识总结与使用教程
java·c语言·开发语言·python·设计模式