模版模式

概述:抽象类定义了执行的方式(一系列步骤或者逻辑,方案,就是一个模子),子类可以重写父类的具体实现,但执行还是要使用父类的定义。

代码:定义一个下班回家的模版(离开公司,在路上,到家开门)

package com.example.java8.model.template;

/**
 * 模版模式
 * 功能:回家(离开公司--》在路上--》开门)
 */
public abstract class GoHomeTemplate {

    /**模版方法(加final避免重写)*/
    public final void exec(){
        this.leaveCompany();
        this.onTheWay();
        this.openDoor();
    }

    /**离开公司*/
    public abstract void leaveCompany();

    /**在路上*/
    public abstract void onTheWay();

    /**开门*/
    public abstract void openDoor();

}

A方法的实现模版

package com.example.java8.model.template;

public class AMethod extends GoHomeTemplate {
    @Override
    public void leaveCompany() {
        System.out.println("走电梯");
    }

    @Override
    public void onTheWay() {
        System.out.println("坐地铁");
    }

    @Override
    public void openDoor() {
        System.out.println("刷门禁卡");
    }
}

B方法的实现模版

package com.example.java8.model.template;

public class BMethod extends GoHomeTemplate {
    @Override
    public void leaveCompany() {
        System.out.println("走楼梯");
    }

    @Override
    public void onTheWay() {
        System.out.println("开小车");
    }

    @Override
    public void openDoor() {
        System.out.println("钥匙开门");
    }
}

测试

package com.example.java8.model.template;

import org.junit.Test;

public class TemplateTest {

    @Test
    public void testA(){
        GoHomeTemplate aMethod = new AMethod();
        aMethod.exec();
    }

    @Test
    public void testB(){
        GoHomeTemplate bMethod = new BMethod();
        bMethod.exec();
    }

}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容