一、模板设计模式(与抽象类特性相关)

为君一笑 提交于 2020-01-29 01:37:20

##模板设计模式

1.1简介

模版设计模式的本质是利用了抽象类对子类强加的覆写的限制实现的,例如:在现实生活之中,都需要进行数据表格的填写,这些表格只有填写正确了才可以获取正确的内容。

模版设计主要是在父类(抽象类)定义一些公共的行为准则,而后需要进行某些处理的时候子类进行相应的方法覆写即可。
(模板设计模式在整个的Java中最为常见的应用就是Servlet程序开发)
现在假设有三种类,基本关系如下:
·人:吃饭、工作、睡觉;
·猪:吃饭、睡觉;
·机器人:补充能量、工作。

在这里插入图片描述
例:代码实现模板设计模式

import com.sun.jdi.request.VMDeathRequest;

abstract class AbstractAction{ //定义公共行为
    public static final int EAT = 1;
    public static final int SLEEP = 2;
    public static final int WORK = 3;

    public abstract void eat();
    public abstract void sleep();
    public abstract void work();

    public void command (int ch){
        switch (ch){
            case EAT:
                this.eat();
                break;
            case SLEEP:
                this.sleep();
                break;
            case WORK:
                this.work();
                break;
            case EAT + SLEEP + WORK :
                this.eat();
                this.sleep();
                this.work();
                break;

        }
    }

}

class Human extends AbstractAction{

    @Override
    public void eat() {
        System.out.println("人吃饭");
    }

    @Override
    public void sleep() {
        System.out.println("人睡觉");

    }

    @Override
    public void work() {
        System.out.println("人工作");

    }
}

class Pig extends AbstractAction{

    @Override
    public void eat() {
        System.out.println("猪吃饭");

    }

    @Override
    public void sleep() {
        System.out.println("猪睡觉");

    }

    @Override
    public void work() {
        System.out.println("猪不工作");

    }
}

class Robot extends AbstractAction{

    @Override
    public void eat() {
        System.out.println("机器人补充能量");

    }

    @Override
    public void sleep() {
        System.out.println("机器人不睡觉");

    }

    @Override
    public void work() {
        System.out.println("机器人干活");

    }
}


public class TestDemo01 { //主类
    public static void main(String[] args) {
        execute(new Human());
        execute(new Pig());
        execute(new Robot());

    }

    public static void execute(AbstractAction action){
        action.command(AbstractAction.EAT + AbstractAction.SLEEP +AbstractAction.WORK);
    }
}

程序执行结果:
人吃饭
人睡觉
人工作
猪吃饭
猪睡觉
猪不工作
机器人补充能量
机器人不睡觉
机器人干活

本程序就是将父类中的command()方法作为了操作的指令,并且每一种类型都必须依照父类中定义的结构后才可以实现特定的功能

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!