初识设计模式之模板方法模式

  • 模式简介
  • 代码实现

模式简介

按我个人理解来说,顾名思义嘛,模板方法模式是和模板有关的,一说到模板我便不自觉就想到抽象类、接口了,那么模板方法不就是在父类里定义一些方法,作为一个模板把这些方法延后到子类中实现吗?如此一来,子类就得按照父类这个模板来进行一些方法的实现了。说了一堆…感觉还是没说明白,还是上代码吧…

代码实现

小韦是个初出茅庐的大学生,毕业后进了一个手机壳加工厂工作…工作一个月后,他发现工厂生产不同手机壳的工艺流程其实是一样的,都是先打印摸具、染色、质量检测,最后包装。他发现,同样的工艺流程生产不同手机壳的关键就在于具体工艺的不同实现。

手机壳抽象类
public abstract class PhoneShell {
    /**
     * 制作手机壳模具
     */
    public abstract void makeModel();

    /**
     * 手机壳染色
     */
    public abstract void dye();

    /**
     * 手机壳质量检测
     */
    public abstract void qualityTest();

    /**
     * 包装手机壳
     */
    public void assemble(){
        System.out.println("正在进行手机壳制作");
        makeModel();
        dye();
        qualityTest();
        System.out.println("手机壳组装完成");
    }
}
具体的两款手机壳类
public class HwPhoneShell extends PhoneShell{
    @Override
    public void makeModel() {
        System.out.println("正在制作HwPhoneShell");
    }

    @Override
    public void dye() {
        System.out.println("正在给手机壳染红色");
    }

    @Override
    public void qualityTest() {
        System.out.println("正在给手机壳做压力测试");
    }
}
public class XmPhoneShell extends PhoneShell{
    @Override
    public void makeModel() {
        System.out.println("正在制作XmPhoneShell");
    }

    @Override
    public void dye() {
        System.out.println("正在给手机壳染黄色");
    }

    @Override
    public void qualityTest() {
        System.out.println("正在给手机壳进行形变测试");
    }
}
测试类
public class Woker {
    public static void main(String[] args) {
        System.out.println("正在启动手机壳的工艺流程,请稍等...");
        PhoneShell hwPhoneShell = new HwPhoneShell();
        PhoneShell xmPhoneShell = new XmPhoneShell();
        System.out.println("进入手机壳工艺流程..");
        hwPhoneShell.assemble();
        xmPhoneShell.assemble();
        System.out.println("两款手机壳制作完毕!");
    }
}

过了一会,小韦开始琢磨着为什么要进行统一的工艺流程呢?后来,小韦问了位厂里的老师傅,老师傅语重心长地答道:“你看啊,这个流水线是不是都是生产手机壳的,而手机壳的生产过程中,有些生产方法是一样的,有些是不一样的。为了提升生产效率,我们就把所有手机壳的生产流程统一起来,这样我们就只需要改变那些不一样的工艺就好了。小韦啊,我这样说你懂了吗?”小韦似懂非懂的点了点头。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值