设计模式之模板方法模式

来源:互联网 发布:淘宝9.9元特价专区在哪 编辑:程序博客网 时间:2024/06/05 22:47

简介

模板模式(Template Pattern),定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

优点:

  1. 封装不变部分,扩展可变部分。
  2. 提取公共代码,便于维护。
  3. 行为由父类控制,子类实现。

缺点:

每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。

通用类图

例如:悍马汽车有多个不同的型号,每个型号有不同的地方也有相同的地方,这里就可以创建一个抽象的悍马车模型。类图如下:

java方法实现

定义抽象类

public abstract class HummerModel {    public abstract void start();    public abstract void stop();    public abstract void alarm();    //这里每一辆汽车的使用的方式基本都是相同的,所以可以在该抽象类中实现    public void run(){        //发动汽车        this.start();        //喇叭的声音        this.alarm();        //停止        this.stop();    }}

定义A型号的车

public class HummerA extends HummerModel{    @Override    public void start() {        System.out.println("悍马A启动");    }    @Override    public void stop() {        System.out.println("悍马A停止");    }    @Override    public void alarm() {        System.out.println("悍马A的喇叭声");    }}

定义B型号的车

public class HummerB extends HummerModel{    @Override    public void start() {        System.out.println("悍马B启动");    }    @Override    public void stop() {        System.out.println("悍马B停止");    }    @Override    public void alarm() {        System.out.println("悍马B的喇叭声");    }}

场景类

public class Client {    public static void  main(String[] args){        HummerModel hA = new HummerA();        hA.run();        System.out.println("===============");        HummerModel hB = new HummerB();        hB.run();    }}

原创粉丝点击