美文网首页
模版方法模式

模版方法模式

作者: 忘净空 | 来源:发表于2016-08-18 17:01 被阅读13次

模式定义:

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

模式结构

模式结构

代码实现-抽象类

public  abstract  class BankTemplateMethod {

    public void takeNumber(){
        System.out.println("取号");
    }

    public abstract void transact();//具体业务

    public void evaluate(){
        System.out.println("反馈评价");
    }

    public final void process(){
        takeNumber();
        transact();
        evaluate();
    }
}

public class Drawback extends BankTemplateMethod {
    @Override
    public void transact() {
        System.out.println("取钱");
    }
}

public class Client {
    public static void main(String[] args) {
        Drawback drawback = new Drawback();
        drawback.process();

        System.out.println("-----------");
        BankTemplateMethod saveBack = new BankTemplateMethod() {
            @Override
            public void transact() {
                System.out.println("存钱");
            }
        };
        saveBack.process();
    }
}

代码实现-回调

public class BankTemplateMethod {

    public void takeNumber() {
        System.out.println("取号");
    }
    public void evaluate() {
        System.out.println("反馈评价");
    }
    public final void process(BackBizCallBack callBack) {
        takeNumber();
        callBack.transact();//具体业务实现抽取到接口中
        evaluate();
    }
}

public interface BackBizCallBack {
    public void transact();//具体业务
}

public class Client {
    //取钱
    public static  void draw() {
        new BankTemplateMethod().process(new BackBizCallBack() {
            public void transact() {
                System.out.println("取钱");
            }
        });
    }

    //挂失
    public static void loseCard() {
        new BankTemplateMethod().process(new BackBizCallBack() {
            public void transact() {
                System.out.println("挂失卡");
            }
        });
    }

    public static void main(String[] args) {
        draw();
        System.out.println("----------------------");
        loseCard();
    }
}

模式的优缺点

模式的优点

  1. 实现代码复用。

模式的缺点

  1. 算法骨架不容易升级。

思考

模式本质:固定算法骨架。

开发中的应用场景:

  1. 需要固定定义算法骨架,实现一个算法的不变部分,并把可变的行为留给子类来实现的情况。

  2. 各个子类中具有公共行为,应该抽取出来,集中在一个公共类中去实现,从而避免代码的重复。

  3. 需要控制子类扩展的情况。模版方法模式会在特定的点来调用子类的方法,这样只允许在这些点进行扩展。

相关文章

  • 设计模式-模版方法模式

    设计模式-模版方法模式 定义 模版方法模式(Template Method Pattern)又叫模版模式,是指定义...

  • 设计模式[14]-模版方法模式-Template Method

    1.模版方法模式简介 模版方法模式(Template Method Pattern)是行为型(Behavioral...

  • 设计模式之模版方法模式

    模版方法模式 模版方法是一种只需使用继承就可以实现的非常简单的模式模版方法模式由两部分结构组成,第一部分是抽象父类...

  • 设计模式之模版方法模式

    模版方法模式 模版方法是一种只需使用继承就可以实现的非常简单的模式模版方法模式由两部分结构组成,第一部分是抽象父类...

  • 设计模式之Template模式(模版模式)

    1 模式简介 1.1 模版方法模式的定义:模版方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模...

  • 模版方法模式

    通俗讲,模版模式就是将通用的上升到父类中,个性化的功能由各个子类完成.代码的复用是模版模式主要解决的.

  • 模版方法模式

    模版方法模式 定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算...

  • 模版方法模式

  • 模版方法模式

  • 模版方法模式

    模版方法模式(定义):通过把相同的方法移动到父类,去除子类中的重复代码,提供一个很好的代码复用平台

网友评论

      本文标题:模版方法模式

      本文链接:https://www.haomeiwen.com/subject/ylivsttx.html