本文已参与「新人创作礼」活动,一起开启掘金创作之路。
模板方法模式
结构
代码
/*******************************************************************************
* Package: com.example.demo.design.template
* Type: AbsBeanMlik
* Date: 2022-04-10 17:43
*
* Copyright (c) 2022 HUANENG GUICHENG TRUST CORP.,LTD All Rights Reserved.
*
* You may not use this file except in compliance with the License.
*******************************************************************************/
package com.example.demo.design.template;
/**
* 功能描述: 制作不同口味豆浆
* 口味:发生改变 (抽象)
* 制作过程 都是相同的 (模板)
*
* 模板方法:行为型模式
*
*
* @author Songxianyang
* @date 2022-04-10 17:43
*/
public abstract class AbsBeanMilk {
/**
* 口味 调味料
*/
public abstract void dressing();
/**
* 制作模板
*/
public void template() {
//选材
putBean();
// 什么口味
dressing();
// 豆浆机开始打磨
beanMachine();
}
/**
* 什么类型 的 大豆
*/
public abstract void putBean();
/**
*
*/
public void beanMachine() {
System.out.println("中国制造:SteveCode牌 豆浆机 开始打磨");
}
}
/*******************************************************************************
* Package: com.example.demo.design.template
* Type: Strawberry
* Date: 2022-04-10 17:52
*
* Copyright (c) 2022 HUANENG GUICHENG TRUST CORP.,LTD All Rights Reserved.
*
* You may not use this file except in compliance with the License.
*******************************************************************************/
package com.example.demo.design.template;
/**
* 功能描述: 草莓味
*
* @author Songxianyang
* @date 2022-04-10 17:52
*/
public class Strawberry extends AbsBeanMilk{
@Override
public void dressing() {
System.out.println("草莓味");
}
@Override
public void putBean() {
System.out.println("普通大豆");
}
}
/*******************************************************************************
* Package: com.example.demo.design.template
* Type: A
* Date: 2022-04-10 17:42
*
* Copyright (c) 2022 HUANENG GUICHENG TRUST CORP.,LTD All Rights Reserved.
*
* You may not use this file except in compliance with the License.
*******************************************************************************/
package com.example.demo.design.template;
/**
* 功能描述:模板方法模式
*
* @author Songxianyang
* @date 2022-04-10 17:42
*/
public class Test {
public static void main(String[] args) {
AbsBeanMilk strawberry = new Strawberry();
strawberry.template();
System.out.println("-------");
AbsBeanMilk watermelon = new Watermelon();
watermelon.template();
}
}
/*******************************************************************************
* Package: com.example.demo.design.template
* Type: Watermelon
* Date: 2022-04-10 17:54
*
* Copyright (c) 2022 HUANENG GUICHENG TRUST CORP.,LTD All Rights Reserved.
*
* You may not use this file except in compliance with the License.
*******************************************************************************/
package com.example.demo.design.template;
/**
* 功能描述: 西瓜味
*
* @author Songxianyang
* @date 2022-04-10 17:54
*/
public class Watermelon extends AbsBeanMilk{
@Override
public void dressing() {
System.out.println("西瓜味");
}
@Override
public void putBean() {
System.out.println("优质大豆");
}
}