模版模式

作者: 78f6ced3a012 | 来源:发表于2019-06-01 15:25 被阅读0次

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

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

    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();
        }
    
    }
    

    相关文章

      网友评论

        本文标题:模版模式

        本文链接:https://www.haomeiwen.com/subject/lkhatctx.html