java 设计模式之模板方法模式

来源:互联网 发布:阿尔法拆单软件 编辑:程序博客网 时间:2024/05/15 18:11

模板方法模式:定义一个具体的框架(抽象类),每个子类调用该框架,加入自己的实现。
具体例子:

package com.java.模版方法模式;/** * @author wangpei * @version 创建时间:2017年5月12日 下午8:35:00 类说明 ,封装变与不变, */public abstract class RefreshReverage {    /* 封装所有子类遵循的算法框架 */    public void zhunbeiyinliao() {        zhufei();        // 制饮料        make();        // 倒入杯中        pour();        // 添加调料        if(IsAdd())        add();    }    private void zhufei() {        System.out.println("将水煮沸");    }    private void make() {        System.out.println("make coffee");    }    protected abstract void pour();    protected abstract void add();    protected boolean IsAdd(){//钩子函数,在基类中提供一个默认或空的方法,具体子类可选择是否复写        return true;    }}
package com.java.模版方法模式;/**  * @author wangpei  * @version 创建时间:2017年5月12日 下午8:46:31  * 类说明  */public class MakeTea  extends RefreshReverage{    @Override    protected void pour() {         System.out.println("将茶叶导入");    }    @Override    protected void add() {         System.out.println("添加糖");    }    public static void main(String[] args) {        RefreshReverage c=new MakeTea();        c.zhunbeiyinliao();    }    protected boolean IsAdd(){//钩子函数,在基类中提供一个默认或空的方法,具体子类可选择是否复写        return false;    }}

具体分析:
定义一个模板方法,里面具体调用了一些private,protected修饰的方法,其中priavte修饰表示:子类不需要对该方法重写。protected:子类可选择的对该方法进行重写。
子类继承对应模板方法的抽象类,并对protected方法进行重写。
钩子方法的作用:钩子函数,在基类中提供一个默认或空的方法,具体子类可选择是否复写。
优点
适用于遵循一定的相似逻辑的操作。
封装性好,
复用性好。
屏蔽细节(对子类屏蔽细节)
便于维护
缺点
单继承,

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩吃饭太少怎么办 孩子不正经吃饭怎么办 月经少卵巢早衰怎么办 四个月婴儿厌食怎么办 孩子读书成绩差怎么办 小孩学习记不住怎么办 儿童不爱吃菜怎么办 10儿童不爱吃饭怎么办 儿童不爱吃蔬菜怎么办 婴儿不爱吃饭怎么办啊 初中不爱写作业怎么办 老是不想写作业怎么办 一年级孩子不爱学怎么办 一年级孩子不爱学习怎么办 我不想读书了怎么办 孩子读书读不懂怎么办 一岁多宝宝不吃奶粉怎么办 小孩不讲话怎么办 舌头 看书记不住内容怎么办 看不下去书怎么办 职高读不下去怎么办 小孩不主动说话怎么办 不喜欢自己的儿子怎么办 生了儿子不喜欢怎么办 孩子不愿意去幼儿园怎么办 内向妈妈带孩子怎么办 从小就不爱学习怎么办 孩子老爱玩不爱学习怎么办? 孩子不爱做题怎么办 看书静不下心怎么办 孩子不自觉学习怎么办 不自觉的孩子怎么办 不学习的孩子怎么办 电脑不受老师控制怎么办 儿子不尊重老师怎么办 小孩不喜欢吃蔬菜怎么办 小孩不愿练钢琴怎么办 孩子不喜欢幼儿园老师怎么办 孩子不主动思考怎么办 我初一不想读书怎么办 初中孩子不爱学习怎么办