Template Method Pattern 模版方法模式

模版方法模式又称为模版模式,是指定义了一个算法的骨架,并允许子类为一个或者多个步骤提供实现。模版模式使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤,属于行为性设计模式。

模版模式适应于以下场景:

  1. 一次性实现一个算法的不变部分,并将可变的行为交给子类来实现。
  2. 个子类中公共的行为被提取出来并集中到一个公共的父类中,从而避免代码重复。

我们的日常生活中,此类的应用场景非常多,比如办理入职流程:填写登记表--->签订劳动合同----->建立花名册--->办理工牌---->安排工位等。又或者平时在家中做饭:去菜市场买菜--->洗菜--->炒菜--->吃饭---->洗碗筷 等。这些可以说都是固定的流程,是不能随意打乱的。

下面我们还是以家庭做饭来实现一个例子,毕竟这是我们每天都要做的,相对来说比较熟悉。

一、首先创建做饭的整体流程的抽象类

public abstract class Cook{
    protected final void cook(String food){
        buyFood(food);
        this.washFood();
        this.cooking();
        this.eat();
        this.aftermath();
    }
    // 买菜
    abstract void buyFood(Stirng food);

    final void washFood(){
        System.out.println("把买回来的菜清洗一下");
    }
    final void cooking(){
        System.out.println("开始烧制菜品");
    }
    final void eat(){
        System.out.println("开始吃饭");
    }
    final void aftermath(){
        System.out.println("善后工作,洗碗、擦桌子等……");
        System.out.println();
    }
}

二、创建做饭的实现类

public class CookImpl extends Cook{
    void buyFood(String food){
        System.out.println("去菜市场买"+food);
    }
}

三、客户端测试代码如下:

public class test{
    public static void main (String[] args){
        Cook cook = new CookImpl();
        cook.cook("猪肉、白菜");

        Cook cook2 = new CookImpl();
        cook2.cook("牛肉、鸡肉");
    }
}

四、执行结果

去菜市场买猪肉、白菜
把买回来的菜清洗一下
开始烧制菜品
开始吃饭
善后工作,洗碗、擦桌子等……

去菜市场买牛肉、鸡肉
把买回来的菜清洗一下
开始烧制菜品
开始吃饭
善后工作,洗碗、擦桌子等……

通过这个例子我们应该大致了解到,洗菜、烧菜、吃饭、善后工作等都是一些公共的行为,所以我们放在抽象类中,而对于买菜来说,每家买的菜都是不一样的,所以需要放到子类中来定制实现。

此文介绍到此结束,只做为简单理解,不做深入探讨!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值