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

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

时间:2018-03-31 19:33:34      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:模板方法模式   .com   基类   类型   pre   png   extend   extends   抽象   

  • 模板方法定义

    定义一个模板,在父类中抽象部分方法,实现部分方法。将部分方法放在子类来实现,使得子类不改变结构即可重新定义某些特定步骤。

  • 方法角色

    (1)基本方法
    基本方法,由子类自己去实现
    (2)模板方法
    具体方法,实现对基本方法的调度,完成固定逻辑。

  • 模板方法的使用场景

    我们在日常开发中可能会遇到类似情况,某个方法实现需要一系列步骤。

例如:我们要造一把机械键盘,需要制作的东西有键帽,键轴,背光类型。

(1)抽象基类(键帽,键轴,背光类型等制作由子类去控制)
(2)制作键盘的过程固定下来由抽象基类去实现

  • UML类图

    技术分享图片
    package Template;

/**
 * Created by jianw.li on 2017/12/11.
 */
public abstract class AbstractKeyboard {

    /**
     * 制作键帽
     */
    protected abstract void makeKeyCap();

    /**
     * 制作键轴
     */
    protected abstract void makeKeySwitches();

    /**
     * 制作键盘灯
     */
    protected abstract void makeLighting();

    /**
     * 不允许改变父类方法
     */
    final public void makeKeyboard() {

        /**
         * 调用制造键盘基本方法
         */
        this.makeKeyCap();
        this.makeKeySwitches();
        this.makeLighting();
    }

}
    public class KeyboardI extends AbstractKeyboard {
    protected void makeKeyCap() {

    }

    protected void makeKeySwitches() {

    }

    protected void makeLighting() {

    }
}
    public class KeyboardII extends AbstractKeyboard {

    protected void makeKeyCap() {

    }

    protected void makeKeySwitches() {

    }

    protected void makeLighting() {

    }
}
    public class KeyboardIII extends AbstractKeyboard{

    protected void makeKeyCap() {

    }

    protected void makeKeySwitches() {

    }

    protected void makeLighting() {

    }
}
  • 优点

    封装部分不可变,扩招可变
    提取公共方法,利于维护
    行为父类控制,子类实现

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

标签:模板方法模式   .com   基类   类型   pre   png   extend   extends   抽象   

原文地址:https://www.cnblogs.com/boycelee/p/8683563.html

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