IT@程序员猿媛Java技术分享程序园

设计模式——模板方法模式

2019-04-29  本文已影响9人  不学无数的程序员

设计模式——模板方法模式

定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类不改变算法结构即可冲定义该算法的某些特定步骤。

模板方法模式介绍

也许看定义有些懵逼,但是模板方法模式在设计模式中算是简单的了,仅仅使用了Java的继承机制。但是它的应用是非常广泛的。我们先举个简单的例子让大家对于模板方法模式有个直观的了解。

模板方法模式

里面有两个角色

例如我们定义个抽象的汽车类,里面有汽车启动、停止、喇叭三个操作。但是每个汽车的这三个操作都是不同的。但是向客户演示的时候都是同样操作启动、停止、按喇叭。所以这就是一个典型的模板方法模式。

abstract class AbstractCar{
    protected abstract void run();
    protected abstract void stop();
    protected abstract void alarm();

    public final void templateMethod(){
        run();
        stop();
        alarm();
    }
}

接下来定义两辆实际的汽车

class BmwCar extends AbstractCar{

    @Override
    protected void run() {
        System.out.println("宝马 跑");
    }

    @Override
    protected void stop() {
        System.out.println("宝马 停");

    }

    @Override
    protected void alarm() {
        System.out.println("宝马 喇叭叫");
    }
}


class HmCar extends AbstractCar{

    @Override
    protected void run() {
        System.out.println("悍马 跑");
    }

    @Override
    protected void stop() {
        System.out.println("悍马 停");
    }

    @Override
    protected void alarm() {
        System.out.println("悍马 喇叭叫");
    }
}

所以在调用的时候根据不同的车创建不同的角色即可

        AbstractCar bmw = new BmwCar();
        bmw.templateMethod();
        AbstractCar hm = new HmCar();
        hm.templateMethod();

抽象模板中的基本方法尽量设计为protected类型,符合迪米特法则,不需要暴露的属性或者方法尽量设置为protected类型。

模板方法模式的优点

参考

上一篇 下一篇

猜你喜欢

热点阅读