跳至主要內容

设计模式-行为型-模板模式

引领潮流小于 1 分钟设计模式archive

1、定义

模板模式:定义一个算法结构,而将一些步骤延迟到子类实现

写法

/**
 * 电脑核心流程
 */
public interface IComputer {

    //开启电源
    void powerOn();

    //检查硬件
    void checkHardware();

    //载入操作系统
    void loadOS();

    //登录
    void login();

    //是否登录
    boolean isLogin();

    //启动完整流程
    void startUp();

}

/**
 *
 * 模板方法
 * 封装不变部分,扩展可变部分。
 * 提取公共部分代码,便于维护
 *
 */
public abstract class AbstractComputer implements IComputer {

    //下面是模板方法,定义为final,子类不能覆盖此方法
    //固定策略不能轻易改变
    @Override
    public final void startUp() {
        System.out.println( "--------开机 START--------" );
        powerOn();
        checkHardware();
        loadOS();
        if (isLogin()) {
            login();
        }
        System.out.println( "-------- 开机 END --------" );
    }
}

/**
 * windows电脑
 */
public class WindowsComputer extends AbstractComputer {

    @Override
    public void powerOn() {
        System.out.println("Windows电脑开启电源");
    }

    @Override
    public void checkHardware() {
        System.out.println("Windows电脑检查硬件");
    }

    @Override
    public void loadOS() {
        System.out.println("Windows电脑载入操作系统");
    }

    @Override
    public void login() {

    }

    @Override
    public boolean isLogin() {
        return false;//返回false,不需登录
    }

}

public  class TestMain {

    public static void main(String[] args){

        AbstractComputer computer = new WindowsComputer();
        computer.startUp();

    }

}

代码示例

https://github.com/yinlingchaoliu/23-design-pattern