码迷,mamicode.com
首页 > 其他好文 > 详细

模板方法模式

时间:2018-12-19 14:16:53      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:rate   oid   面向   bst   算法   抽象   2018年   bre   pre   

模板方法的基本实现

思想

1、一份算法框架,大家共同遵守

2、 算法框架中分离出变与不变的部分

3、将变化的算法,延迟实现(交由具体的子类实现)

基本实现

1、用一个抽象基类,一个public final方法定义好算法框架

2、不变的部分,用private方法加以实现。(基本方法)

3、变化的部分,用protected abstract加以定义(抽象方法)

使用

1、面向接口编程

2、传入实际的实现子类给接口变量

3、接口变量调用框架方法

优点

1.封装性好

2.复用性好

3.屏蔽细节

4.便于维护

/**
 * 抽象基类,为所有子类提供一个算法框架
 * 
 * 提神饮料
 * 
 * @since 2018年12月19日 上午11:44:38
 * @author xuchao
 *
 */
public abstract class RefreshBeverage {
    
    /**
     * 制备饮料的模板方法
     * 封装了所有子类共同遵循的算法框架
     */
    public final void prepareBeverageTemplate() {
        // 步骤1 将水煮沸,公共方法
        boilWater();

        // 步骤2 泡制饮料,由子类决定具体细节
        brew();

        // 步骤3 将饮料倒入杯中,公共方法
        pourInCup();

        // 步骤4 加入调味料,由子类决定具体细节
        addCondiments();

    }

    /**
     * 步骤4 加入调味料,抽象的基本方法
     */
    protected abstract void addCondiments();

    /**
     * 步骤3 将饮料倒入杯中
     */
    private void pourInCup() {
        // TODO Auto-generated method stub
        System.out.println("将饮料倒入杯中");
    }

    /**
     * 步骤2 泡制饮料,抽象的基本方法
     */
    protected abstract void brew();

    /**
     * 步骤1 将水煮沸
     */
    private void boilWater() {
        // TODO Auto-generated method stub
        System.out.println("将水煮沸");
    }
}

 

模板方法模式

标签:rate   oid   面向   bst   算法   抽象   2018年   bre   pre   

原文地址:https://www.cnblogs.com/chao-zjj/p/10142712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!